che*_*cks 11 gcc ld binutils lto gold-linker
如果我想编译我的项目-flto是否足以建立gcc --enable-gold或者我还需要构建黄金并用它替换ld?我还需要其他标志吗?即我这样做
gcc -flto one.c two.c
Run Code Online (Sandbox Code Playgroud)
mel*_*ene 18
根据https://gcc.gnu.org/wiki/LinkTimeOptimization#Requirements,
尽管" 链接时 "的名字,LTO 并不需要使用任何特殊的连接器的功能.所需的基本机制是检测目标文件中的GIMPLE部分.目前正在实施
collect2.因此,LTO将适用于GCC已经支持的任何链接器.
此外,GCC文档的-fuse-linker-plugin说:
默认情况下启用此选项时,启用GCC中的LTO支持并将GCC配置为与支持插件(GNU ld 2.21或更高版本或更高版本)的链接器一起使用.
所以你根本不需要gold,即使你想使用特殊的"链接器插件"功能从库档案中的目标文件中获取优化信息.
-flto文档中有一些用法示例.或
gcc -o myprog -flto -O2 foo.c bar.c
Run Code Online (Sandbox Code Playgroud)
要么
gcc -c -O2 -flto foo.c
gcc -c -O2 -flto bar.c
gcc -o myprog -flto -O2 foo.o bar.o
Run Code Online (Sandbox Code Playgroud)
将工作.
从GCC 4.9开始,您甚至不需要-flto链接:
要记住的唯一重要事项是,要启用链接时优化,您需要使用GCC驱动程序来执行链接步骤.如果所涉及的任何对象都使用,则GCC会自动执行链接时优化
-flto.
从GCC 5开始:
与早期的GCC版本相反,忽略了在链接命令行上传递的优化和目标选项.