如何使用 ld 脚本在 elf 目标中设置入口点

How set set entry point in a elf target using ld script

我想使用链接描述文件指定我的 ELF 文件的入口点。我已经在我的 ELF 中定义了一些部分,所以也想设置一个入口点。谁能告诉我怎么做?

有一个特殊的 (GNU) 链接描述文件命令可以将入口点设置为给定符号的地址 ENTRY(symbol)。参考official documentation.

首先将当前链接器脚本获取到一个文件:

ld --verbose a.o | sed '/======/,/======/!d;//d' > myscript

这里我们过滤了 ===== 之间的行,如在:How to select lines between two marker patterns which may occur multiple times with awk/sed

中提到的

然后将 ENTRY(_start) 行编辑为您想要的符号。

最后使用 -T 到 select 自定义脚本:

ld --verbose -T myscript a.o

看起来命令行参数 -e entryName 是解决问题的方法。 man ld 应该也会提醒您。