如何让-flto工作?

时间:2013-06-11 15:14:24

标签: gcc

我正在使用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

1 个答案:

答案 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