通執行佮可鏈結格式
外觀
會當執行佮會當連結格式(英語:Executable and Linkable Format,縮寫 ELF,此前的寫法是Extensible Linking Format), 定予人稱做ELF 格式,佇計算中,是一種用於可執行檔案、目的碼、共享庫佮核心轉儲(core dump)的標準檔案格式。頭一擺發佈佇一个名為 System V Release 四(SVR 四)的 Unix 作業系統版本內底關於應用二進位介面(ABI)的規範當中,並且這無偌久發布佇工具介面標準(Tool Interface Standard), 隨後誠緊被無仝 Unix 發行商所接受。一九九九年,這種格式予人八十六 open 專案選做 x 八十六架構處理器上的 Unix 佮類 Unix 系統的標準兩進位檔案格式。
按照設計,ELF 格式靈活性懸、會當延伸,而且跨平台。比如講伊支援無仝款的位元組序佮位址範圍,所以伊袂無相容某一特別的 CPU 抑是講予架構。這嘛會使得 ELF 格式會當予人執行佇濟濟無仝平台的各種作業系統所廣泛採納。
檔案格式
彼每一个 ELF 檔案攏由一个 ELF 頭一部佮走精佮其後的檔案資料部份組成。資料的部份會當包含講:
- 程式頭表(Program header table): 描述零个抑是濟个記憶體段資訊。
- 分段頭表(Section header table): 描述零段抑是濟段的連結佮重定位需要的資料。
- 程式頭表佮分段頭表示參照的資料,比如講 . text . data。
- :
記持體段中包含著用著某一个 ELF 檔案執行的時執行所需要的資訊,啊若片段中包含著用佇連結佮重定位的重要資料。規个檔案當中的任何一个位元組上濟干焦會當屬於一个片段,也就是講可能存在無屬於啥物片段的孤立位元組。
技術規範
Linux 標準規範(LSB)增修了成做一寡規格內底所指定的結構中相關的部份。譬如講關於著 System V ABI、AMD 六十四 Supplement 的案例。
工具
- GNU Binutils 是用來處理真濟格式的目的檔 ( 包括講 elf 檔案 ) 一套的程式語言的工具程式,包括講 readelf,objdump,objcopy , nm , strings , strip , as , ar。
- ` readelf ` 顯示 elf 檔案
- ` objdump ` 顯示 elf 和 object 格式檔案,解碼 elf 檔案中高階語言語句所對應的機器語言語句段落,組合著語言語句段落。
- ` nm ` 顯示 elf 檔案中變數名佮地址