鏈結檔案lds

2021-06-14 15:14:23 字數 984 閱讀 4956

一段典型指令碼:(hello.lds)

entry(helloworld)

sections

. = align(4);

.data :

.bss :

}   

----------------------------------

1、點號(.):

點號在sections命令裡稱為位置計數器,代表了當前位置。如上面的0x20008000表示**段的起始位置從這個值開始。

也可以不指定,如.data段和.bss段;代表緊挨著上面的段分布。如果一開始就不指定,則預設值為0。

2、輸出段(.text/.data/.bss):

各關鍵字代表了輸出段的段名,花括號內定義了各段對應的內容。段名可任意定義,輸出段的實際內容與段名無關,只與花括號內的具體內容有關。

如:.text,把列出的(*代表任意)輸入檔案的.text段合併成乙個.text(其中,start.o中的.text放在最前面);

該段的位址由定位器符號的值指定,即0x20008000;

3、align(n):

產生對齊的**或資料,很多體系結構對對齊的**或資料有嚴格的要求。

如 . = align(4)表示位置計數器向高位址方向取最近的4位元組的整數倍。

4、entry(symbol):

相等於-e,將符號symbol的值設定成入口位址(程序執行的第一條使用者空間的指令,在程序位址空間的位址)。

1、arm-linux-ld 命令列的 -e 選項;

2、連線指令碼的entry(symbol)命令;

3、如果定義了start符號,使用start符號值;

4、如果存在.text section,使用.text section的第一位元組的位置值;

5、使用值0;

-----------------------------------

arm-linux-ld -t hello.lds -o file.eld

ARM 鏈結配置 lds檔案學習

本文由jacky原創,來自 對於.lds檔案,它定義了整個程式編譯之後的連線過程,決定了乙個可執行程式的各個段的儲存位置。雖然現在我還沒怎麼用它,但感覺還是挺重要的,有必要了解一下。先看一下gnu官方 上對.lds檔案形式的完整描述 sections region phdr fill.secname...

Linux鏈結指令碼學習 lds

l一 概論 ld gnu的鏈結器.用來把一定量的目標檔案跟檔案檔案鏈結在一起,並重新定位它們的資料,鏈結符號引用.一般編譯乙個程式時,最後一步就是執行ld進行鏈結 每乙個鏈結都被乙個鏈結指令碼所控制,這個指令碼是用鏈結命令語言書寫的.二 鏈結指令碼 鏈結指令碼的乙個主要目的是描述輸入檔案中的各個段 ...

u boot中 lds鏈結指令碼檔案的分析

對於.lds檔案,它定義了整個程式編譯之後的連線過程,決定了乙個可執行程式的各個段的儲存位置。sections region phdr fill secname和contents是必須的,其他的都是可選的。下面挑幾個常用的看看 1 secname 段名 2 contents 決定哪些內容放在本段,可...