ZHCUAU3J January 2018 – March 2024
目标文件的最小单元是段。段是占据存储器映射中连续空间的代码或数据块。目标文件的每个段都是独立且不同的。
ELF 格式可执行目标文件包含程序段。ELF 程序段是元段。它表示目标存储器的一个连续区域。它是具有相同属性(例如,可写或可读)的段 的集合。ELF 加载程序需要程序段信息,但不需要段信息。ELF 标准允许链接器完全从可执行目标文件中省略 ELF 段信息。
目标文件通常包含三个默认段:
.text 段 | 包含可执行代码(1) |
.data 段 | 通常包含已初始化的数据 |
.bss | 通常为未初始化的变量预留空间 |
您可以使用链接器创建、命名和链接其他类型的段。.text、.data 和 .bss 段是范例,说明了如何处理段。
有两种基本类型的段:
已初始化的段 | 包含数据或代码。.text 和 .data 段已被初始化。 |
未初始化的段 | 在存储器映射中为未初始化的数据预留空间。.bss 段未被初始化。 |
链接器的其中一项功能是将段重新定位到目标系统的存储器映射中;此功能被称为放置。大多数系统都包含几种类型的存储器,因此使用段可帮助您更高效地使用目标存储器。所有段均可单独重定位;您可以将任何段放入目标存储器的任何已分配块中。例如,您可以定义一个包含初始化例程的段,然后将该例程分配到包含 ROM 的存储器映射的一个部分。有关段放置的更多信息,请参阅 节 11.3.5。
图 8-1 展示了目标文件中的段与虚构目标存储器之间的关系。ROM 可以是 EEPROM、FLASH 或实际系统中的一些其他类型的物理存储器。