ld 组合了许多对象文件和归档文件,重新定位它们的数据并绑定符号引用。通常编译程序的最后一步是运行 ld。
每个可加载或可分配的输出节都有两个地址。第一个是 VMA,即虚拟内存地址。这是运行输出文件时该节所拥有的地址。第二个是 LMA,即加载内存地址。这是将加载该节的地址。在大多数情况下,这两个地址将是相同的。当它们可能不同时的一个例子是当一个数据段加载到 ROM,然后在程序启动时复制到 RAM (这种技术通常用于在基于 ROM 的系统中初始化全局变量)。在这种情况下,ROM 地址是 LMA,RAM 地址是 VMA。
section [address] [(type)] :
[AT(lma)]
[ALIGN(section_align) | ALIGN_WITH_INPUT]
[SUBALIGN(subsection_align)]
[constraint]
{
output-section-command
output-section-command
…
} [>region] [AT>lma_region] [:phdr :phdr …] [=fillexp] [,]
其中AT 是表示加载内存地址。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)