uboot10之主Makefile分析1

转载https://www.cnblogs.com/amanlikethis/p/3419858.html

1.uboot Makefile体系组成

2.Makefile的目标

3.Makefile的依赖

OBJS = cpu/$(CPU)/start.o

ifeq ($(CPU),i386)

OBJS += cpu/$(CPU)/start16.o

OBJS += cpu/$(CPU)/reset.o

endif

ifeq ($(CPU),ppc4xx)

OBJS += cpu/$(CPU)/resetvec.o

endif

ifeq ($(CPU),mpc83xx)

OBJS += cpu/$(CPU)/resetvec.o

endif

ifeq ($(CPU),mpc85xx)

OBJS += cpu/$(CPU)/resetvec.o

endif

ifeq ($(CPU),mpc86xx)

OBJS += cpu/$(CPU)/resetvec.o

endif

ifeq ($(CPU),bf533)

OBJS += cpu/$(CPU)/start1.o cpu/$(CPU)/interrupt.o cpu/$(CPU)/cache.o

OBJS += cpu/$(CPU)/cplbhdlr.o cpu/$(CPU)/cplbmgr.o cpu/$(CPU)/flush.o

endif

 

LIBS = lib_generic/libgeneric.a

LIBS += board/$(BOARDDIR)/lib$(BOARD).a

LIBS += cpu/$(CPU)/lib$(CPU).a

ifdef SOC

LIBS += cpu/$(CPU)/$(SOC)/lib$(SOC).a

endif

LIBS += lib_$(ARCH)/lib$(ARCH).a

LIBS += fs/cramfs/libcramfs.a fs/fat/libfat.a fs/fdos/libfdos.a fs/jffs2/libjffs2.a \

fs/reiserfs/libreiserfs.a fs/ext2/libext2fs.a

LIBS += net/libnet.a

LIBS += disk/libdisk.a

LIBS += rtc/librtc.a

LIBS += dtt/libdtt.a

LIBS += drivers/libdrivers.a

LIBS += drivers/nand/libnand.a

LIBS += drivers/nand_legacy/libnand_legacy.a

LIBS += drivers/sk98lin/libsk98lin.a

LIBS += post/libpost.a post/cpu/libcpu.a

LIBS += common/libcommon.a

LIBS += $(BOARDLIBS)

4.Makefile的编译规则

all: $(ALL)

 

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

$(OBJCOPY) ${OBJCFLAGS} -O ihex $< $@

 

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

$(OBJCOPY) ${OBJCFLAGS} -O srec $< $@

 

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

$(OBJCOPY) ${OBJCFLAGS} -O binary $< $@

 

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

./tools/mkimage -A $(ARCH) -T firmware -C none \

-a $(TEXT_BASE) -e 0 \

-n $(shell sed -n -e 's/.*U_BOOT_VERSION//p' $(VERSION_FILE) | \

sed -e 's/"[ ]*$$/ for $(BOARD) board"/') \

-d $< $@

 

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

$(OBJDUMP) -d $< > $@

 

$(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

 

$(OBJS):

$(MAKE) -C cpu/$(CPU) $(if $(REMOTE_BUILD),$@,$(notdir $@))

 

$(LIBS):

$(MAKE) -C $(dir $(subst $(obj),,$@))

 

$(SUBDIRS):

$(MAKE) -C $@ all

 

$(NAND_SPL): version

$(MAKE) -C nand_spl/board/$(BOARDDIR) all

 

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

cat $(obj)nand_spl/u-boot-spl-16k.bin $(obj)u-boot.bin > $(obj)u-boot-nand.bin

 

version:

@echo -n "#define U_BOOT_VERSION \"U-Boot " > $(VERSION_FILE); \

echo -n "$(U_BOOT_VERSION)" >> $(VERSION_FILE); \

echo -n $(shell $(CONFIG_SHELL) $(TOPDIR)/tools/setlocalversion \

$(TOPDIR)) >> $(VERSION_FILE); \

echo "\"" >> $(VERSION_FILE)

 

gdbtools:

$(MAKE) -C tools/gdb all || exit 1

 

updater:

$(MAKE) -C tools/updater all || exit 1

 

env:

$(MAKE) -C tools/env all || exit 1

 

depend dep:

for dir in $(SUBDIRS) ; do $(MAKE) -C $$dir _depend ; done

 

tags ctags:

ctags -w -o $(OBJTREE)/ctags `find $(SUBDIRS) include \

lib_generic board/$(BOARDDIR) cpu/$(CPU) lib_$(ARCH) \

fs/cramfs fs/fat fs/fdos fs/jffs2 \

net disk rtc dtt drivers drivers/sk98lin common \

\( -name CVS -prune \) -o \( -name '*.[ch]' -print \)`

 

etags:

etags -a -o $(OBJTREE)/etags `find $(SUBDIRS) include \

lib_generic board/$(BOARDDIR) cpu/$(CPU) lib_$(ARCH) \

fs/cramfs fs/fat fs/fdos fs/jffs2 \

net disk rtc dtt drivers drivers/sk98lin common \

\( -name CVS -prune \) -o \( -name '*.[ch]' -print \)`

 

$(obj)System.map: $(obj)u-boot

@$(NM) $< | \

grep -v '\(compiled\)\|\(\.o$$\)\|\( [aUw] \)\|\(\.\.ng$$\)\|\(LASH[RL]DI\)' | \

sort > $(obj)System.map

5.uboot的整个编译过程

6、u-boot编译的特点

1、编译子目录

  编译子目录的方法是进入子目录,然后执行子目录中的Makefile

2、子目录Makefile的内容

  子目录Makefile的编译规则以及依赖是由顶层的config.mkrules.mk构成,子目录的Makefile在使用时是用include包含进来的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值