我正在使用GCC 4.7.2和LD 2.23但是当我将-flto添加到我的编译选项时,我的编译时间增加了20%以上!该手册似乎表明-fuse-linker-plugin是优化工作所必需的。它还说它默认使用-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
答案 0 :(得分:4)
链接时间优化不应该减少编译时间,但可以优化程序的运行时间。
@options,只需添加" -flto -fuse-linker-plugin"到您的CFLAGS(或CXXFLAGS for c ++)和LDFLAGS,它应该可以正常工作。
@gold:ld --version可能会返回gnu LD,切换到gold,使ld符号链接
which ld指向
which ld.gold例如
ln -s /usr/bin/ld.gold /usr/bin/ld