我使用的是 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