2015-10-13 35 views
0

我在RedHat下使用NetBeans。我有幾個開放的項目組合在一起,使命令行可執行文件和共享對象「插件」。混合中還有兩個靜態庫。這一切都很好,很好。redhat:netbeans:g ++:適用於鏈接器的編譯器選項

我剛剛注意到,當我「清理並構建」可執行文件和共享對象時,編譯器選項也在鏈接器行上表示。一拉:

g++ -O2 -Wall -c -fmessage-length=0 -c -g -Werror -DDEBUG -DDEBUG_2 -I/usr/include -I/usr/include/c++/4.4.7/x86_64-redhat-linux -I/usr/include/c++/4.4.7 -I../ITGUtilities -MMD -MP -MF "build/Debug/GNU-Linux-x86/LocalCache.o.d" -o build/Debug/GNU-Linux-x86/LocalCache.o LocalCache.cpp 

然後在編譯行(編輯爲簡潔起見)後:

g++ -O2 -Wall -c -fmessage-length=0 -fPIC -o dist/Debug/GNU-Linux-x86/pam_plugin.so build/Debug/GNU-Linux-x86/pam_plugin.o -L... -lpam -l... -shared -fPIC 
g++: build/Debug/GNU-Linux-x86/pam_plugin.o: linker input file unused because linking not done 

,我認爲我有一個相當普通的一套項目CONFIGS的。我確實設置了-O2 -Wall -c -fmessage-length=0編譯器選項,但除NetBeans應用的默認值之外,沒有爲鏈接器提供的選項。

對於可執行文件和插件項目,我可以去Properties > Linker > Additional Options並展開[...]以瞭解NB認爲它會應用的內容。這不顯示編譯選項,但做一個實際的構建不會適用它們。

它沒有做鏈接步驟,我假設這是因爲編譯器選項。這很奇怪。

想法?

回答

1

不要將-c選項添加到編譯器選項,它表示不運行鏈接器。無論如何編譯時都會根據需要添加它。

+0

Doh!謝謝。這就是它。 –