1
我正在使用GCC 4.7.2和LD 2.23,但是当我将-flto添加到我的编译选项时,我的编译时间增加了20%以上!该手册似乎表明,需要使用-fuse-linker-plugin才能进行优化。它还说,它在默认情况下启用了-flto但是当我明确地添加它,我看到在链接命令以下错误:如何让-flto工作?
g++: error: -fuse-linker-plugin is not supported in this configuration
根据说明书,应当由LD 2.21或更高版本支持。任何想法,为什么我得到这个错误?以下是我的完整编译命令的示例:
g++ -Wall -pipe -O3 -flto -fno-strict-aliasing -mtune=generic --no-exceptions -fPIC -c some.cc
g++ -o exec -Xlinker some1.o some2.o -static some1.a some2.a -Wl,--wrap,open -flto -fuse-linker-plugin
运行'ld --help | grep的插件显示‘-plugin’选项,所以我不明白为什么GCC抱怨:
-plugin PLUGIN Load named plugin
-plugin-opt ARG Send arg to last-loaded plugin
您是否检查过[此主题](http://gcc.gnu.org/ml/gcc-help/2012-04/msg00220.html)? –
感谢您的链接。我没有构建我们的GCC,但是我用strace运行GCC,甚至没有看到任何LD的调用,所以我不认为GCC会从中抛出一个错误。 – dromodel
删除该选项并使用strace我可以确认系统LD未被使用。使用的版本是2.23.1。不知道它是否是黄金。 – dromodel