elf檔案由4部分組成,分別是elf頭,程式頭表(elf header) ,程式頭表(programme header table) ,節(sections) ,和節頭表(sections) 。實際上乙個檔案中並不一定含有上述全部的內容,實際上只有elf標頭檔案的位置是固定的,其餘各個部分的位置,大小等資訊由elf的各項值來決定。
檔案頭共 52位元組,描述了字的大小,生成該檔案的系統的位元組順序,elf頭的大小,目標檔案型別、機器型別等。
elf header結構體定義:
#define ei_nident 16
typedef struct elf32_ehdr;
資料型別如下:
名稱 大小 對齊 用途
elf32_addr 4 4 無符號程式位址
elf32_half 2 2 無符號中等大小整數
elf32_off 4 4 無符號檔案偏移
elf32_sword 4 4 有符號大整數
elf32_word 4 4 無符號大整數
unsigned char 1 1 無符號小整數
實際上programmer header 描述的是系統準備程式執行所需的乙個段(segment),或其他的資訊。
結構體定義:
typedef struct
ELF檔案格式概要介紹
elf 檔案有三種型別 可重定位檔案 也就是通常稱的目標檔案,字尾為.o。共享檔案 也就是通常稱的庫檔案,字尾為.so。可執行檔案 本文主要討論的檔案格式,總的來說,可執行檔案的格式與上述兩種檔案的格式之間的區別主要在於觀察的角度不同 一種稱為連線檢視 linking view 一種稱為執行檢視 e...
ELF檔案格式
在介紹elf格式之前,先簡單說明一下可執行檔案的生成流程 1 編寫c原始檔,或彙編原始檔 2 準備共享庫格式的目標檔案 shared object file 如數學庫 標準庫 2 用編譯器 compiler 將c編譯成可重定位格式的目標檔案 relocatable object file 用彙編器 ...
ELF檔案格式
1.目標檔案 編譯器和彙編器生成可重定位目標檔案 包括共享目標檔案 鏈結器生成可執行目標檔案。2.可重定位目標檔案和可執行目標檔案的格式 可重定位目標檔案格式 可執行目標檔案格式 3.下面我們開始分析上面 而對於未被初始化的全域性變數和靜態區域性變數,編譯的時候並未被分配空間,而是僅僅在.bss段中...