我在RedHat下使用NetBeans。我有几个开放的项目,结合在一起,使命令行可执行和共享对象"插件"。同时还有两个静态库。这一切都很好。
我只是注意到,当我"清理和构建"可执行文件和共享对象时,编译器选项也在链接器行表示。洛杉矶:
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
我想我有一个相当通用的项目配置集。我确实设置了-O2 -Wall -c -fmessage-length=0
编译器选项,但是除了默认的NetBeans应用之外,没有为链接器提供选项。
对于可执行文件和插件项目,我可以去Properties > Linker > Additional Options
并扩展[...]
,看看NB认为它将适用什么。这不会显示编译选项,但在实际构建时确实会应用它们。
它没有做链接步骤,我假设这是因为编译器选项。这太奇怪了
想法?
不要在编译器选项中添加-c
选项,该选项表示不运行链接器。无论如何,它都会在编译时根据需要添加。