計算機系統之可重定位目標檔案

2021-09-27 13:36:49 字數 1296 閱讀 9815

在平時,原始檔到目標檔案是如下圖轉換,我們今天來著重分析hello.o,也就是標題的重定位目標檔案。

目標檔案有三種形式。

可重定位目標檔案,包含二進位制**和資料,在編譯時可以與其他可重定位檔案合併,建立乙個可執行目標檔案

可執行目標檔案, 包含二進位制**和資料,其可被直接複製到記憶體並執行。

共享目標檔案,一種特殊型別的可重定位目標檔案,可以在載入或者執行時被動態的載入進記憶體並鏈結。

我在ubuntu裡面先編寫乙個hello world 的c程式。

#include

intmain()

然後使用linux的gcc命令使生成可重定位檔案

gcc -c hello.c
如圖

我們可以在檔案中發現多了乙個 hello.o的檔案

這個就是前面提到的可重定位目標檔案。

1.elf:可執行可鏈結格式(executable and linkable format, elf)。

其中夾在elf頭和字頭部表之間的都是

乙個典型的elf可重定位目標檔案就包含上圖中幾個節。

我們可以用如下幾個指令進行檢視並運用。

2.使用readelf -s檢視hello.o

3.使用readelf -h檢視hello.o

4.使用readelf -s檢視hello.o

可重定位目標檔案

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

可重定位目標檔案

可重定位目標檔案經由源程式預處理,編譯,彙編之後得到的檔案。其中包括不可讀的二進位制 擴充套件名為.o。現有兩個模組的 main.c int sum int a,int n int array 2 int main sum.c int sum int a,int n return s 一.在linu...

7 4 可重定位目標檔案

下圖展示了乙個典型的elf可重定位目標檔案的格式。elf頭 elf header 以乙個16位元組的序列開始,這個序列描述了生成該檔案的系統的字的大小和位元組順序,elf頭剩下的部分包含幫助鏈結器語法分析和解釋目標檔案的資訊。其中包括elf頭的大小,目標檔案的型別 如可重定位,可執行性,或者共享的 ...