編譯完成之后在uboot根目錄下生成的uboot.lds是鏈接文件。鏈接器就是通過這個文件將成千上萬的.o文件鏈接在一起,此文件是根據(jù)arch/arm/cpu/uboot.lds生成。uboot.lds中規(guī)定了整個uboot的程序入口點(此入口點可以在Makefile文件中進行了更改,將入口地址定位到了內(nèi)存中0X87800000位置),鏈接器以這個入口點為基點,將各個.o文件中代碼段.text、數(shù)據(jù)段.data、未初始化變量.bss段按照一定的順序在內(nèi)存中進行具體布局,然后由鏈接器最后生成.elf文件。那么什么是代碼段.text、數(shù)據(jù)段.data、未初始化變量.bss段呢,參考以下說明:
.text代碼段通常是指用來存放程序執(zhí)行代碼的一塊內(nèi)存區(qū)域;
.data數(shù)據(jù)段.通常是指用來存放程序中已初始化的全局變量的一塊內(nèi)存區(qū)域;
.bss段通常是指用來存放程序中未初始化的全局變量的一塊內(nèi)存區(qū)域;
當然有的.o文件中不僅僅只有這三個基本數(shù)據(jù)段,還有其他的段和自定義的段。