WeHack BBS
测试了一些链接时优化的用法 - 可打印的版本

+- WeHack BBS (https://bbs.wehack.space)
+-- 版块: 计算机技术 (https://bbs.wehack.space/forum-5.html)
+--- 版块: 程序设计讨论区 (https://bbs.wehack.space/forum-14.html)
+--- 主题: 测试了一些链接时优化的用法 (/thread-253.html)



测试了一些链接时优化的用法 - vimacs - 05-06-2021

GCC的链接时优化在支持链接器插件的系统上默认生成thin-LTO目标文件,即不产生机器码,只产生GIMPLE中间表示,目标文件格式为ELF.
最后的链接步骤使用gcc/g++,它们作为driver调用连接器,最终使用的是GCC的collect2程序,可以自动对LTO目标文件做链接时优化,和没有LTO数据的目标文件链接起来。ld.bfd和ld.gold都支持GCC的LTO,但lld不支持。

LLVM Clang的thin-LTO目标文件是字节码文件,和用clang -emit-llvm -c产生的文件类型相同,没有ELF结构。ld.bfd和ld.gold通过LLVM的LLVMgold.so插件调用LLVM的链接时优化,而lld不需要此插件。

使用-ffat-lto-objects产生fat-LTO目标文件可以让不支持同种LTO的链接器使用这种目标文件,最后链接时不使用链接时优化。