redhat:netbeans:g ++:应用于链接器的编译器选项

时间:2015-10-13 16:24:17

标签: netbeans linker g++

我在RedHat下使用NetBeans。我有几个打开的项目,它们组合在一起,形成一个命令行可执行文件和一个共享对象"插件"。混合中还有两个静态库。这一切都很好,很好。

我注意到,当我"清洁和建造"可执行文件和共享对象,编译器选项也在链接器行上表示。 la:

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认为它将适用的内容。这不会显示编译选项,但实际构建会应用它们。

它没有进行链接步骤,我假设这是因为编译器选项。这很奇怪。

想法?

1 个答案:

答案 0 :(得分:1)

不要将-c选项添加到不运行链接器的编译器选项中。无论如何,只要编译就会根据需要添加它。