3

我使用的是 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' 显示“-plugin”选项,所以我不明白为什么 GCC 抱怨:

-plugin PLUGIN              Load named plugin
-plugin-opt ARG             Send arg to last-loaded plugin
4

1 回答 1

4

链接时间优化不应该减少编译时间,而是优化程序的运行时间。

@options,只需将“-flto -fuse-linker-plugin”添加到您的 CFLAGS(或 C++ 的 CXXFLAGS)和 LDFLAGS 中,它应该可以正常工作。

@gold: ld --version 可能会返回 gnu LD,切换到黄金,制作 ld 符号链接

哪个ld
指向
哪个ld.gold
例如
ln -s /usr/bin/ld.gold /usr/bin/ld

于 2014-04-25T15:20:50.460 回答