1. 程式由 段(sections)和堆疊(stack)組成,而段(sections)包括四個部分,分別為:**段(.text)、資料段(.data)以及bss段(.bss)
1.1 **段(.text):存放要執行的程式指令
1.2 資料段(.data):存放已初始化的全域性變數
1.3 bss段(.bss) :存放未初始化的全域性變數
1.4 棧 :存放區域性變數
1.5 堆 :存放malloc申請的空間
2. 設定起始位址 . = 0x30008000 /* 2440記憶體中的起始執行位址為0x30000000 */
/* 但有32k用來儲存ttb,真實執行起始位址未0x30008000 */
3. 對齊設定 . = align(4) /* 2440為32bit,要對.text, .data, .bss設定四位元組對齊 */
4. 使用變數 bss_start = . /* 用來設定當前位址存放在乙個變數中 */
bss_end = .
/* 以下為鏈結器指令碼範例**,為table鍵 */
sections
. = align(4);
.data :
. = align(4);
.bss_start = .;
.bss :
bss_end = .;
}
鏈結器指令碼
鏈結器指令碼構成 段 起始鏈結位址 對齊 變數 段首檔案 乙個可執行程式通常由 段,資料段,bss段構成。其中資料段存放的是初始化後的前期變數 bss段存放的是沒有初始化的前期變數 乙個鏈結器指令碼led.lds例子 output arch arm 指定輸出檔案的平台體系是arm entry sta...
鏈結器指令碼
參考 程式設計師的自我修養 鏈結 裝載與庫 什麼是鏈結指令碼?鏈結指令碼就是程式鏈結時的參考檔案,其主要目的是描述如何把輸入檔案中的段 section 對映到輸出檔案中,並控制輸出檔案的儲存布局。鏈結指令碼的基本命令式sections命令,乙個sections命令內部包含乙個或多個段,段 secti...
Linker script 鏈結器指令碼(1)
每個鏈結都由鏈結指令碼控制著,指令碼由鏈結器命令語言組成。指令碼的主要目的是描述如何把輸入檔案中的節 sections 對映到輸出檔案中,並控制輸出檔案的儲存布局。大多數的鏈結指令碼就是做這些事情的,但在有必要時,指令碼也可以指導鏈結器執行一些其他的操作。鏈結器總是使用鏈結器指令碼,如果你沒有提供乙...