LD文件 详解

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 是表示加载内存地址。

你可能感兴趣的:(从零开始操作系统,c++,开发语言,linux)