ld是GNU binutils工具集中的一个,是众多Linkers(链接器)的一种。把各种目标文件和库文件链接起来,并重定向它们的数据,完成符号解析。Linking其实主要就是完成四个方面的工作:storage allocation,symbol management, libraries,relocation。
LMA (load memory address 加载内存地址或进程地址空间地址)
VMA (virtual memory address 虚拟内存地址或程序地址空间地址)
VMA 是执行输出文件时 section 所在的地址,而 LMA 是加载输出文件时 section 所在的地址。一般而言,某 section 的 VMA == LMA. 但在嵌入式系统中,经常存在加载地址和执行地址不同的情况:比如将输出文件加载到开发板的 flash 中(由 LMA 指定), 而在运行时将位于 flash 中的输出文件复制到 SDRAM 中(由 VMA 指定)。
SECTION-COMMAND 有四种: