x86 反彙編/Linux 可執行檔案
X86 反彙編 華夏公益教科書的 Linux 可執行檔案頁面是一個存根。您可以透過擴充套件本節來提供幫助。
ELF 檔案格式(Executable and Linking Format 的簡稱)由 Unix System Laboratories 開發,作為 COFF 和 a.out 等先前檔案格式的繼任者。在許多方面,ELF 格式比以前的格式更強大、更通用,並且已廣泛成為 Linux、Solaris、IRIX 和 FreeBSD 上的標準(儘管 FreeBSD 派生的 Mac OS X 使用 Mach-O 格式)。ELF 也已被 OpenVMS 用於 Itanium,以及 BeOS 用於 x86。
從歷史上看,Linux 並不總是使用 ELF;Red Hat Linux 4 是該發行版首次使用 ELF;以前的版本使用 a.out 格式。
ELF 物件被分解為不同的段和/或節。可以使用位於物件第一個位元組的 ELF 頭來定位這些段和/或節。ELF 頭提供了程式頭和節頭的地址。使用這些資料結構可以找到 ELF 物件其餘部分的內容,包括包含程式碼和資料的 .text 和 .data 段。
來自 binutils 包的 GNU readelf 實用程式是解析 ELF 物件的常用工具。

每個 ELF 檔案由一個 ELF 頭和隨後的檔案資料組成。檔案資料可以包括
- 程式頭表,描述零個或多個段
- 節頭表,描述零個或多個節
- 程式或節頭表條目引用的資料
段包含執行檔案執行所需的資訊,而節包含連結和重定位的重要資料。整個檔案中的每個位元組都只被一個節佔用,但可能存在孤兒位元組,這些位元組不被任何節覆蓋。在 Unix 可執行檔案的正常情況下,一個或多個節被封閉在一個段中。
可重定位 ELF 檔案由編譯器建立。在執行之前需要連結它們。
這些檔案通常在 .a 歸檔檔案中找到,副檔名為 .o。
a.out 是一種非常簡單的格式,它包含一個頭(位於偏移量 0),該頭包含 3 個可執行節(程式碼、資料、bss)的大小,以及指向其他資訊的指標,例如重定位(對於 .o 檔案)、符號和符號字串。實際的節內容位於頭之後。不同節的偏移量從先前節的大小計算得出。
a.out 格式現在很少使用。