具體的過程需要先閱讀u-boot.lds檔案,這個檔案在arch/arm/cpu目錄下,具體內容如下:
output_format("elf32-littlearm","elf32-littlearm","elf32-littlearm");
//定義輸出格式為小端模式
output_arch(arm) ;定義輸出的架構為arm體系結構
entry(_start) ;u-boot的入口位址為_start
sections
. = align(4) ;四位元組對齊
.rodata :
. = align(4);
.data :
. = align(4);
. = .;
__u_boot_cmd_start = . ;__u_boot_cmd_start的起始位址為命令存放區域的首位址
.u_boot_cmd : ;命令存放區
__u_boot_cmd_end = . ;命令存放區末位址
. = align(4);
__image_copy_end = . ;映像檔案複製結束位址
.rel.dyn :
.dynsym :
_end = .;
. = align(4096);
.mmutable :
.bss __rel_dyn_start (overlay) :
/discard/ : ;動態連線符號表的字串部分,與.dynsym聯用
/discard/ :
/discard/ : ;過程連線表(procedure linking table)
/discard/ :
/discard/ :
}
uboot鏈結指令碼
gnu編譯器生成的目標檔案預設為elf格式,elf檔案由若干段 section 組成,如不特殊指明,由c源程式生成的目標 中包含如下段 text 正文段 包含程式的指令 data 資料段 包含固定的資料,如常量 字串 bss 未初始化資料段 包含未初始化的變數 陣列等。c 源程式生成的目標 中還包括...
鏈結指令碼(1)
1 什麼是ld?它有什麼作用?ld是gnu binutils工具集中的乙個,是眾多linkers 鏈結器 的一種。完成的功能自然也就是鏈結器的基本功能 把各種目標檔案和庫檔案鏈結起來,並重定向它們的資料,完成符號解析。linking其實主要就是完成四個方面的工作 storage allocation...
鏈結指令碼(1)
分類 鏈結指令碼 makefile 2012 05 17 20 49 1126人閱讀收藏 舉報 指令碼linker makefile allocation file flash 1 什麼是ld?它有什麼作用?ld是gnu binutils工具集中的乙個,是眾多linkers 鏈結器 的一種。完成的功...