繼續上**
objs = $(cpudir)/start.o
ifeq ($(cpu),i386)
objs += $(cpudir)/start16.o
objs += $(cpudir)/resetvec.o
endif
ifeq ($(cpu),ppc4xx)
objs += $(cpudir)/resetvec.o
endif
ifeq ($(cpu),mpc85xx)
objs += $(cpudir)/resetvec.o
endif
objs := $(addprefix $(obj),$(objs))
libs = lib/libgeneric.o
libs += lib/lzma/liblzma.o
libs += lib/lzo/liblzo.o。。
。
主要是定義一些目標檔案和庫檔案。
題外話:
對於裡面的交叉工具一直沒有說,還有很多任務具鏈也沒有說,當我們include進入了頂層的config.mk檔案後makefile會對其進行解析。
#
# option checker (courtesy linux kernel) to ensure
# only supported compiler options are used
#cc-option = $(shell if $(cc) $(cflags) $(1) -s -o /dev/null -xc /dev/null \
> /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi ;)
## include the make variables (cc, etc...)
#as = $(cross_compile)as
ld = $(cross_compile)ld
cc = $(cross_compile)gcc
cpp = $(cc) -e
ar = $(cross_compile)ar
nm = $(cross_compile)nm
ldr = $(cross_compile)ldr
strip = $(cross_compile)strip
objcopy = $(cross_compile)objcopy
objdump = $(cross_compile)objdump
ranlib = $(cross_compile)ranlib
所有的工具變數都在這裡,我們在makefile中都是可以進行引用的。對於確定完整的各交叉編譯工具,通過頂層makefile中得到的cross_compile變數(即工具鏈的字首),由此定義各工具的名稱。
接著又遇到了乙個all:目標,這樣它會替換前面這個all 繼續執行。
all: $(all)
$(obj)u-boot.hex: $(obj)u-boot
$(objcopy) $ -o ihex $< $@
$(obj)u-boot.srec: $(obj)u-boot
$(objcopy) -o srec $< $@
$(obj)u-boot.bin: $(obj)u-boot
$(objcopy) $ -o binary $< $@
$(board_size_check)
$(obj)u-boot.ldr: $(obj)u-boot
$(create_ldr_env)
$(ldr) -t $(config_bfin_cpu) -c $@ $< $(ldr_flags)
$(board_size_check)
all += $(obj)u-boot.srec $(obj)u-boot.bin $(obj)system.map $(u_boot_nand) $(u_boot_onenand)
自然它會要根據makefile規則來進行處理各個檔案並產生u-boot.bin.
但對於還有疑問為什麼有兩個all:目標,可以訪問:uboot的編譯過程三之番外
Uboot學習筆記(三)Uboot編譯過程分析
mkconfig分析 makefile分析 通過閱讀訊為提供的使用手冊,我們可以知道三星exynos4412的uboot的編譯是通過呼叫build uboot.sh來實現的,這個指令碼檔案通過傳入引數的不同來生成不同記憶體大小 emmc大小的核心板的uboot.bin二進位制檔案,例如 scp封裝2...
U Boot 編譯過程解析
解壓u boot 2010.03.tar.bz2就可以得到全部u boot源程式。在頂層目錄下有29個子目錄,分別存放和管理不同的源程式。這些目錄中所要存放的檔案有其規則,可以分為3類。與處理器體系結構或者開發板硬體直接相關。一些通用的函式或者驅動程式。u boot的應用程式 工具或者檔案。表1.5...
U Boot 1 1 6的編譯過程
從頂層makefile說起 92行 mkconfig srctree mkconfig其中的mkconfig是乙個shell指令碼,srctree預設值為u boot的頂層目錄。117行 include objtree include config.mkinclude config.mk由92行的指...