分析頂層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...