可以看到鏈結器和載入器看待elf是完全不同的,鏈結器看到的是由區段頭部表描述的一系列邏輯區段的集合(也就是說它忽略了程式頭部表)。而載入器則是看成是由程式頭部表描述的一系列的段的集合(忽略了區段頭部表)。
elf它可以表示不同型別的二進位制檔案(由e_type來決定):
#define et_none 0
#define et_rel 1 //可重定位
#define et_exec 2 //可執行
#define et_dyn 3 //動態鏈結庫
#define et_core 4
#define et_loproc 0xff00
#define et_hiproc 0xffff
elf的頭結構
typedef struct elf32_hdr elf32_ehdr;
區段頭部表項:
typedef struct elf32_shdr;
程式頭部表--緊跟在elf頭下面,其實也就是可執行檔案用到的,由於可執行檔案需要將檔案對映到記憶體,並執行,因此這裡的頭部增加了要被對映的段:
typedef struct elf32_phdr elf32_phdr;
符號表結構:
typedef struct elf32_sym elf32_sym;
linux下常見的ELF檔案
linux下常見的elf檔案 1 可重定位檔案.obj,這種檔案包括資料和指令,可以被鏈結成為可執行檔案 exe 或者共享目標檔案 so 靜態鏈結庫可以歸為這一類 2 可執行檔案.exe,這種檔案包含了可以直接執行的程式,它的代表就是elf可執行檔案,他們一般都沒有副檔名 3 共享目標檔案.so,這...
Linux下的ELF檔案格式簡介
1 概述 executable and linking format elf 檔案是x86 linux系統下的一種常用目標檔案 object file 格式,elf檔案格式比較複雜,本文只是簡要介紹它的結構。有三種主要型別 1 適於連線的可重定位檔案 relocatable file 可與其它目標檔...
Linux下的ELF檔案格式簡介
1.概述 executable and linking format elf 檔案是x86 linux系統下的一種常用目標檔案 object file 格式,有三種主要型別 1 適於連線的可重定位檔案 relocatable file 可與其它目標檔案一起建立可執行檔案和共享目標檔案。2 適於執行的...