码迷,mamicode.com
首页 > 其他好文 > 详细

u-boot-->makefile解析①

时间:2018-11-07 11:21:07      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:span   lag   基于   arch   $$   sed   -o   class   system   

下面基于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解析①

标签:span   lag   基于   arch   $$   sed   -o   class   system   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!