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