Link 使用 ld.gold 将静态库直接转换为可执行文件

Link static library directly into an executable using ld.gold

我有一个 libfoo.a,其中包含 _start 和可执行文件所需的所有符号。 ld.bfd -o foo libfoo.a 在我的情况下工作顺利。但是,ld.gold -o foo libfoo.a 无法静默生成不带来自 libfoo.a 符号的可执行文件。用 ld.gold -o foo a.o libfoo.a 创建一个空的 a.o 和 link 是可行的。

我想知道是否有任何方法可以使用 ld.gold 将静态库直接 link 转换为可执行文件而不创建多余的空对象文件?

您可以使用 -e _start 选项显式指定入口符号,链接器将使用它来决定是否需要加载定义它的对象。

遗憾的是,gold 不会使用隐式开始符号从存档库中加载对象。