首页 > 其他 > 详细

u-boot-->makefile解析①

时间:2018-11-07 11:02:43      阅读:215      评论:0      收藏:0      [点我收藏+]

下面基于u-boot 1.1.6版本

在u-boot 顶层目录下的Makefile中240行起:

ALL = $(obj)u-boot.srec $(obj)u-boot.bin $(obj)System.map $(U_BOOT_NAND)

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

上面代码中 $(obj)为目的路径, 在103行有定义,    下面这些变量的定义在顶层的config.mk中有定义,$(OBJCOPY) ${OBJCFLAGS}    $(ARCH)    $(TEXT_BASE)   $(VERSION_FILE)  $(BOARD) $(OBJDUMP) $(LIBS) $(LNDIR)  $(LD)  $(LDFLAGS)  $(__OBJS)  $(__LIBS) $(PLATFORM_LIBS)  $(LDSCRIPT)  $(SUBDIRS)

 

说明函数subst的用法,在config.mk中有这么一条语句:

 dir := $(subst $(SRCTREE)/,,$(CURDIR)) 

  变量         函数       参数1    参数2  参数3

意思为把$(CURDIR)字符串中包含的  $(SRCTREE)/  字符串替换为空,后将其值赋给变量dir.

u-boot-->makefile解析①

原文:https://www.cnblogs.com/liuxinyong236/p/9920748.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!