PKU/SSDB-03-TR-005
2003 年 5 月
2.2 LSB
由于我们所关心的主要是 Linux 平台上目标文件的格式,所以 Linux 标准 LSB
(Linux Standard Base)也是重要的参考资料。LSB 的目标是增强不同的 Linux 发布版本之
间的兼容性,与 ABI 类似,也由两个部分组成:
gLSB(Generic LSB) 适用于所有体系结构
archLSB(Architecture Specific LSB) 特定某种体系结构的 LSB
目前,LSB 由 SourceForge 开放源码项目社区提供支持。
3 ELF 文件格式
3.1 简介
目标文件有三种类型:
可重定位文件(Relocatable File) 包含适合于与其他目标文件链接来创建可
执行文件或者共享目标文件的代码和数据。
可执行文件(Executable File) 包含适合于执行的一个程序,此文件规定了
exec() 如何创建一个程序的进程映像。
共享目标文件(Shared Object File) 包含可在两种上下文中链接的代码和数
据。首先链接编辑器可以将它和其它可重定位文件和共享目标文件一起处理,
生成另外一个目标文件。其次,动态链接器(Dynamic Linker)可能将它与某
个可执行文件以及其它共享目标一起组合,创建进程映像。
目标文件全部是程序的二进制表示,目的是直接在某种处理器上直接执行。
3.1.1 目标文件中的数据表示
目标文件格式支持 8 位字节/32 位体系结构。不过这种格式是可以扩展的,目标文
件因此以某些机器独立的格式表达某些控制数据,使得能够以一种公共的方式来识别和
解释其内容。目标文件中的其它数据使用目标处理器的编码结构,而不管文件在何种机
器上创建。
表 1 ELF 中常用数据格式
名称
大小 对齐 目的
Elf32_Addr
4
4
无符号程序地址
Elf32_Half
2
2
无符号中等整数
Elf32_Off
4
4
无符号文件偏移
Elf32_SWord
4
4
有符号大整数
Elf32_Word
4
4
无符号大整数
unsigned char
1
1
无符号小整数
目标文件中的所有数据结构都遵从“自然”大小和对齐规则。如果必要,数据结构可
以包含显式的补齐,例如为了确保 4 字节对象按 4 字节边界对齐。数据对齐同样适用于
© 北京大学信息科学技术学院操作系统实验室
第 2 页 共 38 页