gcc 和 clang 都通过允许目标文件.o
(这些目标文件可以打包到静态档案中,并为静态链接做好准备。
这些具有 lto 功能的档案的标准是通过包含正常的机器代码(因此它们可以像正常的机器代码一样工作)和 IR 来使它们变得“胖”。但是是否有可能用多种类型的 IR 制作一个“非常胖”的存档并让编译器识别这些各自的 IR?以下是一些挑战:
- 两个编译器似乎都建议修改版本
ar
以确保 IR 被包含和索引。gcc 有gcc-ar
(插件),而 clang 有llvm-ar
. - Clang 不会产生“胖”档案。事实上,标准 GNU 工具无法解释其位码目标文件。