如何 link .a/.lib 到 .elf

How to link a .a/.lib to a .elf

我有一个链接到多个 .a、.so 和 .lib 文件的 .elf 文件。现在我想向同一个精灵添加另一个 .lib。有办法实现吗?

I have a .elf file

那句话毫无意义。 ELF 文件有不同的种类:ET_DYN(共享库或 PIE 可执行文件)、ET_EXEC(可执行文件)、ET_REL(可重定位目标文件)、ET_CORE(核心转储) .

你可以通过 运行 file foo.elf 来判断你拥有哪种 .elf

前两个被认为是“最终的”,无法对它们进行进一步的链接。显然你也不能重新链接 core 文件。

Now I want to add another .lib to the same elf.

听起来你有一个可执行文件,你想扩展它。

这是不可能的

更新:

can I add .lib to a relocatable object file?

是:与添加任何其他库的方式相同。如果原始命令是:

xyz-link -o final.elf -whole-archive foo.lib

那么新命令将是:

xyz-link -o final.elf -whole-archive foo.lib bar.lib