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)是在文件的固定位置。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章