左邊是從匯編器和鏈接器的視角來看這個文件,開頭的ELF 描述了體系結構和操作系統等基本信息,并指出 Table和 Table在文件中的什么位置寫文件符號的使用順序, Table在匯編和鏈接過程中沒有用到,所以是可有可無的, Table中保存了所有的描述信息。右邊是從加載器的視角來看這個文件,開頭是ELF , Table中保存了所有的描述信息,Table在加載過程中沒有用到寫文件符號的使用順序,所以是可有可無的。注意 Table和 Table并不是一定要位于文件開頭和結尾的,其位置由ELF 指出,上圖這么畫只是為了清晰。
.text
存放程序源代碼編譯后的機器指令
.data

存放全局變量和局部靜態變量
.bss
為未初始化的全局變量和局部靜態變量預留位置,目標文件中,未初始化變量不需要占據任何實際的磁盤空間
.rel.text

存放調用外部函數或者引用全局變量等相關的重定位信息
.rel.data
一個全局變量被初始化為其他文件中的全局變量地址或者外部定義函數的地址。
.symtab

存放函數和全局變量的信息,重定位時根據.rel.text和.rel.data來修正相關地址
.debug
-g選項之后才有, 調試符號表
.line

-g選項之后才有,記錄源代碼行號和.text中機器指令的映射關系
.strtab
以null結尾的字符串序列
ELF頭(elf header)------readelf -h filename

包含系統相關、類型相關、加載相關、鏈接相關的信息
節頭部表(section header table)------readelf -S filename
描述程序節,為匯編器和鏈接器服務。它把elf文件分成了許多