u boot 1 1 6分析(二)編譯鏈結過程

2021-10-04 11:26:05 字數 1565 閱讀 7815

分析頂層makefile:

117行包含了配置過程生成的config.mk檔案:

include $(objtree)/include/config.mk
選擇對應的交叉編譯工具鏈

ifndef cross_compile	

ifeq ($(hostarch),ppc)

cross_compile =

else

ifeq ($(arch),ppc)

cross_compile = powerpc-linux-

endif

ifeq ($(arch),arm)

cross_compile = arm-linux-

endif

……endif

組織鏈結物件

objs  = cpu/$(cpu)/start.o	#組織鏈結檔案,第乙個是start.o

ifeq ($(cpu),i386)

objs += cpu/$(cpu)/start16.o

……

組織庫檔案

libs  = lib_generic/libgeneric.a	

libs += board/$(boarddir)/lib$(board).a

……

生成bin檔案的依賴是$(obj)u-boot

生成$(obj)u-boot的依賴是各個子目錄、目標檔案、庫檔案、鏈結檔案

$(obj)u-boot.bin:	$(obj)u-boot	

$(objcopy) $ -o binary $< $@

……$(obj)u-boot: depend version $(subdirs) $(objs) $(libs) $(ldscript)

undef_sym=`$(objdump) -x $(libs) |sed -n -e 's/.*\(__u_boot_cmd_.*\)/-u\1/p'|sort|uniq`;\

cd $(lndir) && $(ld) $(ldflags) $$undef_sym $(__objs) \

--start-group $(__libs) --end-group $(platform_libs) \

-map u-boot.map -o u-boot

分析makefile逐一替換依賴項,可以得到鏈結命令

配置後執行make命令,在輸出內容的最後也可以看到鏈結命令

arm-linux-ld -bstatic -t /home/book/desktop/new_pro/two/u-boot-1.1.6/board/smdk2410/u-boot.lds -ttext 0x33f80000  $undef_sym cpu/arm920t/start.o

從鏈結命令可以知道

1、鏈結指令碼:u-boot-1.1.6/board/smdk2410/u-boot.lds

2、鏈結的第乙個檔案:cpu/arm920t/start.s

u boot 1 1 6分析(一)配置過程

在arm板上電時,為了執行操作linux系統,需要先初始化工作,如初始化各種硬體 設定棧指標 載入作業系統等,完成這些任務的程式就是bootloader,它是上電執行的第一段程式。bootloader種類眾多,在arm上用得較多的有u boot和vivi 不同板子有不同的硬體配置,bootloade...

U Boot 1 1 6的編譯過程

從頂層makefile說起 92行 mkconfig srctree mkconfig其中的mkconfig是乙個shell指令碼,srctree預設值為u boot的頂層目錄。117行 include objtree include config.mkinclude config.mk由92行的指...

二 分析提取OGRLayer

一 分析提取ogrlayer 主要是先把資料結構弄好,paintgl好用。void akgiswidget initializegl 迴圈圖元 while pfeature player getnextfeature 得到幾何特徵 ogrgeometry pgeometry pfeature get...