IMX6ULL連結指令碼註釋記錄 2020-11-21

GoogleFellow發表於2020-11-21

目錄

1,原始碼註釋

2,參考資料

2.1正點原子視訊

2.2 ld連結指令碼語法簡介

2.3 Linux下的lds連結指令碼詳解


1,原始碼註釋

SECTIONS{
	. = 0X87800000; /*“.”在連結指令碼里面叫做定位計數器,要求程式碼連結到以 0X87800000為起始地址的地方*/
    /*  “.text”是段名,後面的冒號是語法要求,冒號後面的大括號裡面可以填上要連結到“.text”這個段裡面的所有檔案,
    *   “*(.text)”中的“*”是萬用字元,表示所有輸入檔案的.text段都放到“.text”中。 
    */
	.text : 
	{
		start.o  /*start.o 要被連結到最開始的地方,因為 start.o 裡面包含這第一個要執行的命令。*/
		main.o  /* main.o這個檔案,其實可以不用寫出來,可以由編譯器自行決定連結位置*/
		*(.text)
	}
	.rodata ALIGN(4) : {*(.rodata*)}   /*ALIGN(4)表示 4 位元組對齊。也就是說段“.data”的起始地址要能被 4 整除*/  
	.data ALIGN(4)   : { *(.data) }    
	__bss_start = .;    /*?“__bss_start”和“__bss_end”是符號,對這兩個符號進行賦值,其值為定位符“.”,*/
	.bss ALIGN(4)  : { *(.bss)  *(COMMON) }     /*“.bss”資料就是那些定義了但是沒有被初始化的變數。*/
	__bss_end = .;
}

2,參考資料

2.1正點原子視訊

https://www.bilibili.com/video/BV1yE411h7uQ?p=16

 

2.2 ld連結指令碼語法簡介

主要包含命令語句和賦值語句。

一、語法

1、分號,作為分隔符號  

2、註釋 表示式和運算子  和c一樣,其中註釋只有/**/

3、字元引用  段名檔名等有特殊字元,使用雙引號

4、命令語句

a、ENTRY(symble)  指定入口地址,入口地址就是程式執行的第一條使用者空間的指令再程式地址空間中的地址,被指定再ELF檔案頭的ELF32_Ehdr的e_entry成員中。

ld有多種指定程式入口方式:(優先順序逐漸降低)

ld -e

entry()

_start符號

.text

0

 

b、STARTUP(filename)  將檔案filename 作為連結過程中的第一個輸入檔案。

c、SEATCH_DIR 將路徑path加入到ld連結器的庫查詢目錄。 ld會根據指定的目錄去查詢相應的庫。

d、INPUT(file,file,...)  將指定檔案作為連結過程中的輸入檔案

e、INCLUDE filename 將指定檔案包含進本連結指令碼。

f、PROVIDE(symbol) 在連結指令碼中定義某個符號。該符號再程式中可以被引用,起始前文提到的特殊符號都是由系統預設的連結指令碼通過PROVIDE 命令定義在指令碼中的

https://www.cnblogs.com/tureno/articles/3741291.html

2.3 Linux下的lds連結指令碼詳解

https://blog.csdn.net/sunjing_/article/details/52221959

 

相關文章