ELF文件格式有32位及64位的两种,本质上差别不是很大,主要关注ELF 32位的文件处理方式。
整体文件格式
ELF为Executable and Linking Format的缩写,为编译生成的目标文件,编译生成的目标文件有几种格式 relocatable file、executable file 和 shared Object file三种,linking file 及 Execution file的格式如下:
在图示的各个元素中,只有ELF header要求严格固定的位置,其他模块的位置可以变化。在ELF header中可以配置 Program header table及 Section header table的偏移位置,以及相应的个数和占用字节大小等等,目前主要关心Linking file的组成格式。
元素类型定义
由于不同的机器环境对数据表达的空间格式存在差异,ELF文件的数据格式大小做了如下规定: