ELF可重定位目標檔案格式

2021-09-27 18:54:18 字數 704 閱讀 1040

現在我們用乙個簡單的c語言程式addvec.c做示範,**如下:

int addvec=0p;

void addvec(int *x,int *y,int *z,int z){

int i;

addvec++;

for(i=0;i開啟終端,輸入指令

不同節的位置和大小是由節頭部表的描述的,其中目標檔案中每個節都有乙個固定大小的條目。

輸入如下指令即可看到該目標檔案的節頭**式

具體內容如下:

從截圖可看出,該目標檔案節頭表有十個節,節的大小、數量會有些許差異,不同的節存放著不同的節點資訊,乙個典型的elf可重定位目標檔案就包括了以上十個節。

.text:已編譯程式的機器**。

.rodata:唯讀資料,比如printf語句中的格式串和開關語句中跳轉表。

.data:已初始化的全域性和靜態c變數。區域性c變數在執行時被儲存在棧裡面,既不出現在.data節中,也不出現在.bss中。

.bss:未初始化的全域性和靜態c變數,以及所有被初始化為0的全域性或靜態變數。

…等。

ELF格式可重定位目標檔案

乙個典型的elf格式的可重定位目標檔案以elf頭開始,還包括 區 資料區,以下是具體形式 elf頭 text 已編譯程式的機器 rodata 唯讀資料 data 已初始化的全域性和靜態c變數 bss 未初始化的全域性和靜態c變數,初始化為0的全域性或靜態變數 symtab 符號表 rel.text ...

04可重定位目標檔案ELF檔案解析

目錄 一 可重定位目標檔案的特點 二 可重定位目標檔案的格式 可被鏈結 合併 生成可執行檔案或共享目標檔案 靜態鏈結庫檔案由若干個可重定位目標檔案組成 包含 資料 已初始化全域性變數和區域性靜態變數.data和未初始化的全域性變數和區域性靜態變數.bss 包含重定位資訊 指出哪些符號引用處需要重定位...

可重定位目標檔案

目標檔案有三種形式 1.可重定位目標檔案 2.可執行目標檔案 3.共享目標檔案 編譯器和彙編器生成可重定位目標檔案 共享目標檔案,聯結器生成可執行目標檔案。在這裡我們首先介紹可重定位目標檔案。可重定位目標檔案 包含二進位制 和資料,可以在編譯時與其他可重定位目標檔案合併起來,建立乙個可執行目標檔案。...