勵志

勵志人生知識庫

elf檔案解析

ELF(Executable and Linkable Format)檔案是一種目標檔案格式,主要用於Linux平台,Windows下使用的是PE/COFF格式。ELF檔案主要包括以下內容:

ELF頭:位於檔案的開始,描述了ELF檔案的基本屬性,如ELF檔案版本、目標機器型號、程式入口地址等。

Section頭表:由一系列Section頭組成,每個Section頭指向一個Section,包含所指向Section的名字、類型、其在ELF檔案中的偏移地址、大小等信息。

Program頭表:由一系列Program頭組成,每個Program頭指向一個Segment,包含所指向Segment的類型、其在ELF檔案中的偏移地址、大小,映射到記憶體的虛擬地址等信息。一個Segment由一系列連續的Section構成,連續的Section擁有相同的許可權,如唯讀、讀寫、可讀可執行等。

Section:ELF檔案的主要內容存放於此,如代碼段、數據段、未初始化的全局變數和局部靜態變數等。

Program Header Table:程式頭表,包含多個Program Header。

Section Header Table:節區頭表,包含多個Section Header。

ELF檔案的連結視圖和執行視圖是其在記憶體中的兩種不同表現形式,連結視圖只在連結中起作用,而執行視圖只在載入並執行時起作用。記憶體分配和許可權管理以頁為單位,一節太小浪費空間,所以把相同許可權的節放到一起管理,可以減少頁面內部的碎片,節省了空間,顯著提高記憶體利用率。