"ENTRY" 在链接描述文件中是什么意思?

What does "ENTRY" mean in a linker script?

我开始学习写一些微控制器的低级软件,我已经开始研究链接器脚本。

在这种情况下,我真的不明白 ENTRY 命令的含义。由于大多数微控制器在预定地址开始执行,我们在链接描述文件中选择哪个入口点有什么区别?

入口点定义了程序的起点。这当然是非常好的信息。这样 flash 工具就知道在哪里 flash 你的代码,debug 工具也知道你的符号在哪里。

ENTRY() 是一个 ELF 特性,基本上只是在可执行文件的 ELF header 中设置程序入口地址。该地址可能与二进制文件的第一个可执行段的起始地址不同(如果您没有定义 ENTRY(),这将是默认的执行地址)。

是否使用此信息(即执行开始发生在第一个代码段地址还是 ENTRY())不受链接器的控制,因为它完全取决于您的 ELF 的可用性和功能装载机。

由于您通常在微控制器上没有这样的东西,ENTRY() 在那里几乎没有用,您最好忽略该语句。