了解ELF檔案型別

2022-08-02 20:03:13 字數 1403 閱讀 4050

目錄elf根據它的英文名稱executable and linkable format又叫做可執行與可鏈結格式,因此,elf其實是一種linux下的檔案格式。

①可重定位檔案(relocatable file)

②可執行檔案(executable file)

③共享目標檔案(shared object file)

我們分別來看下這三種檔案:

elf檔案由4部分組成,分別是elf頭(elf header)、程式頭表(program header table)、節(section)或段(segment)和節頭表(section header table)。

我們先來看一下program header table和section header table聯絡:

要知道這兩個表的聯絡我就得先知道elf檔案格式提供了兩種檢視:分別是鏈結檢視和執行檢視

為什麼需要兩種檢視?

當elf檔案被載入到記憶體後,系統會將多個具有相同許可權的section合併成乙個segment。作業系統通常是以頁為基本單位來管理記憶體分配,一般頁的大小為4kb。同時,記憶體的許可權管理粒度也是以頁為單位,頁內的記憶體是具有同樣的許可權屬性。elf檔案被對映時,是以系統的頁長度為單位,每個section在對映時的長度都是系統頁長度的整數倍,若section的長度不是其整數倍,則多餘部分會佔乙個頁,然而乙個elf檔案具有多個section,會導致記憶體浪費嚴重,而將多個section合併後會以段為基準,減少了頁面內部碎片,節省裡空間,提高了記憶體利用率。

elf檔案頭位於elf檔案的起始位置,它包含整個檔案的靜態資訊,可以通過readelf命令進行檢視,elf檔案頭結構以及相關引數定義在/usr/include/elf.h中,分為32位和64位兩種版本,分別為elf32_ehdr和elf_64_ehdr,它們絕大多數內容都是一樣的。

typedef struct  elf32_ehdr;
我們可以使用readelf命令檢視elf header:

使用readelf -l hello檢視program header和section header的資訊:

ELF檔案型別

elf型別 三種主要的elf檔案型別 可執行檔案 包含了 和資料。具有可執行的程式。例如這樣乙個程式 file dltest dltest elf 32 bit lsb executable,intel 80386,version 1,dynamically linked uses shared l...

Linux檔案型別詳解 (幾種簡單檔案型別)

普通檔案一般為灰色字型,綠色字型的是可執行檔案,紅色字型的是壓縮檔案。檔案屬性 檔案型別 普通檔案,即 file d目錄檔案 b裝置檔案 block device 如 硬碟 c字元裝置檔案 character device l鏈結檔案 symbolic link 又稱軟鏈結檔案 p管道檔案 pipe...

LInux檔案型別

大多數linux資源都能以檔案的方式來訪問,在乙個linux系統上能夠出現的部分型別的檔案如下 普通檔案 稱為磁碟檔案,並且被定義為能夠進行隨機儲存的資料儲存單位。他們是面向位元組的,意思是從其中讀出或向其寫入的基本單位是單個位元組,單個位元組也與單個字元相對應。無名管道和有名管道 pipc 是乙個...