【发布时间】:2020-07-04 14:10:06
【问题描述】:
如何在链接阶段从 ELF 中删除部分?是否有任何链接器选项或标志?我最感兴趣的是如何使用 LLVM 完成它,但任何有关 GCC 的信息也将不胜感激。
谢谢!
【问题讨论】:
如何在链接阶段从 ELF 中删除部分?是否有任何链接器选项或标志?我最感兴趣的是如何使用 LLVM 完成它,但任何有关 GCC 的信息也将不胜感激。
谢谢!
【问题讨论】:
如果您想要与默认 ELF 构造不同的任何内容——复制所有内容——那么您将需要编写链接描述文件。文件可以指定要包含的内容和放置位置。因此,您可以通过不复制来删除此部分。 LLD 支持GNU LD style linker scripts。它们看起来像:
SECTIONS
{
. = 0x10000;
.text : { *(.text) }
. = 0x8000000;
.data : { *(.data) }
.bss : { *(.bss) }
}
它们是在 lld 命令行中指定的,例如: ld.lld --script=../linker_script xxx.o -o xxx
【讨论】: