一。 sinclude $(obj)include/autoconf.mk.dep 该句相当于c语言的#include,当该文件不存在时make会查找相应的规则来产生此文件,该块在Makefile的440行如下:
$(obj)include/autoconf.mk.dep: $(obj)include/config.h include/common.h
@$(XECHO) Generating $@ ; \
set -e ; \
: Generate the dependancies ; \
$(CC) -x c -DDO_DEPS_ONLY -M $(HOST_CFLAGS) $(CPPFLAGS) \
-MQ $(obj)include/autoconf.mk include/common.h > $@
执行得到 include/autoconf.mk.dep 并被包含进来,该文件为 include/autoconf.mk 的依赖文件
二。 产生 include/version_autogenerated.h 该文件内容为:
#define U_BOOT_VERSION "U-Boot 1.3.4"
三。 产生 include/autoconf.mk 系统中所有的"CONFIG_"开头的宏开关, 都被放到了include/autoconf.mk中,该文件在编译参数设置文件即$(TOPDIR)/config.mk中被包含
四。 执行$(SUBDIRS)目标下的命令,无意义不做详解
五。 执行$(OBJS)目标下的命令 $(MAKE) -C cpu/$(CPU) $(if $(REMOTE_BUILD),$@,$(notdir $@)) ,即进入OBJ目录下执行make $@得到$@文件
六。 执行$(LIBS)目录下的命令 $(MAKE) -C $(dir $(subst $(obj),,$@)) 即 进入LIBS目录下执行 make 得到相应的库文件
七。 执行$(LIBBOARD)目录下的命令$(MAKE) -C $(dir $(subst $(obj),,$@)) 即 进入LIBBOARD目录下执行 make 得到相应的库文件
八。 执行$(LDSCRIPT)目录下的命令$(MAKE) -C $(dir $@) $(notdir $@)即 进入LDSCRIPT目录下执行 make $(notdir $@)这里未定义该目标所以没有操作
九。 分别进入u-boot u-boot.srec u-boot.bin System.map u-boot.dis 中得到相应的目标文件
原文:https://www.cnblogs.com/genshu123/p/11121838.html