u-boot 编译流程 (一)

本文详细解析了U-Boot的.config文件生成过程,并指导如何添加自定义配置。从make命令执行开始,逐步介绍了scripts_basic、outputmakefile的生成及fixdep的作用。最后,通过实例演示了如何为特定目录添加编译选项。

1 .config文件产生

  • 研究.config文件的产生流程,添加自己的配置
  • U-Boot 2017.11
  • Source Insight
  • Ubuntu 18.04
  • arm-linux-gnueabi-xxx

1.1 find %config

当我们执行sudo make smdk5250_defconfig命令行后,make会进入顶层Makefile文件,执行下面的语句. 而%config依赖scripts_basicouputmakefile, 所以我问首先去看scripts_basic

%config: scripts_basic outputmakefile FORCE	
	@echo "eric_debug.........start:$@"
	$(Q)$(MAKE) $(build)=scripts/kconfig $@
	@echo "eric_debug.........end $@"

1.2 find scripts_basic

在顶层Makefile中会发现如下代码段

scripts_basic:
	$(Q)$(MAKE) $(build)=scripts/basic
	$(Q)rm -f .tmp_quiet_recordmcount

make 直接执行命令行$(Q)$(MAKE) $(build)=scripts/basic, 展开后得到下面的片段,默认目标是all

$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.build obj=scripts/basic
1.2.1 进入Makefile.build 执行
  • 包含scripts/basic/Makefile
  • 包含scripts/Makefile.host

obj=scripts/basic通过下面的语句, 展开后得到 include ./scripts/basic/Makefile .

PHONY := __build
__build:
src := scripts/basic
include scripts/Kbuild.include

# For backward compatibility check that these variables do not change
save-cflags := $(CFLAGS)

#kbuild-dir := ./scripts/basic
kbuild-dir := $(if $(filter /%,$(src)),$(src),$(srctree)/$(src))
#kbuild-file := ./scripts/basic/Makefile
kbuild-file := $(if $(wildcard $(kbuild-dir)/Kbuild),$(kbuild-dir)/Kbuild,$(kbuild-dir)/Makefile)
#include ./scripts/basic/Makefile
include $(kbuild-file)

ifneq ($(hostprogs-y)$(hostprogs-m),)
include scripts/Makefile.host
endif

__build: $(if $(KBUILD_BUILTIN),$(builtin-target) $(lib-target) $(extra-y)) \
	 $(
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值