① ELF文件格式
Linux ELF ELF = Executable and Linkable Format,可執行連接格式,是UNIX系統實驗室(USL)作為應用程序二進制介面(Application Binary Interface,ABI)而開發和發布的。擴展名為elf。工具介面標准委員會(TIS)選擇了正在發展中的ELF標准作為工作在32位INTEL體繫上不同操作系統之間可移植的二進制文件格式。假定開發者定義了一個二進制介面集合,ELF標准用它來支持流線型的軟體發展。應該減少不同執行介面的數量。因此可以減少重新編程重新編譯的代碼。
編輯本段文件格式
Linking View Elf header
Program header table optional
section1
……
section n
section header table
Exection View Elf header
Program header table
segment 1
section 2
……
segment header table
一個ELF頭在文件的開始,保存了路線圖(road map),描述了該文件的組織情況。sections保存著object 文件的信息,從連接角度看:包括指令,數據,符號表,重定位信息等等。特別sections的描述會出項在以後的第一部分。第二部分討論了段和從程序的執行角度看文件。 假如一個程序頭表(program header table)存在,那麼它告訴系統如何來創建一個進程的內存映象。被用來建立進程映象(執行一個程序)的文件必須要有一個程序頭表(program header table);可重定位文件不需要這個頭表。一個section頭表(section header table)包含了描述文件sections的信息。每個section在這個表中有一個入口;每個入口給出了該section的名字,大小,等等信息。在聯接過程中的文件必須有一個section頭表;其他object文件可要可不要這個section頭表。 注意: 雖然圖顯示出程序頭表立刻出現在一個ELF頭後,section頭表跟著其他section部分出現,事實是的文件是可以不同的。此外,sections和段(segments)沒有特別的順序。只有ELF頭(elf header)是在文件的固定位置。