UBOOT的編譯過程三

2021-08-30 19:25:00 字數 2070 閱讀 7459

繼續上**

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行的指...