linux内核学习(7)粗略走走kbuild Makefile编译流程

本文详细介绍了Linux内核编译过程中`make menuconfig`的执行流程,从`scripts_basic`到`config`目标的构建,探讨了`$(Q)`、`$(build)`等变量的作用,以及`Makefile`中`include`、`ifeq`等语法的运用。通过分析`Makefile`的执行过程,揭示了`Makefile.build`和`Kbuild.include`在内核配置中的角色,帮助读者理解Linux内核配置和编译的底层逻辑。
摘要由CSDN通过智能技术生成

今天看Makefile文件,我头大了,此Makefile非彼Makefile,里面多了很多内置命令,比如origin、patsubst等等啦,这 些都没听说过,更可恶的是,连网上都没有,可见,这是一件多么伤人的事情,分析这样的,真是让人折寿啊!没办法,大半天都没找出个头绪来,于是我也没什么 办法了,只好利用跟踪的分析方法,就是按照安装的步骤来,通过make命令来找到突破口。这种方法的确好使。没用多久,我就稍微有了点头绪,也算今天没白 白浪费掉。

先来个“make menuconfig”,这个内核编译的第一步,配置内核。因此我打开Makefile文件,查找目标--menuconfig,我操,怎么会没有,这是 算是一个坎吧,怎么办呢,得想法子啊,我操,那换个,"config",我日啊,找了好长时间,发现有两个目标,很不容易。
config: scripts_basic outputmakefile FORCE
    $(Q)mkdir -p include/linux include/config
    $(Q)$(MAKE) $(build)=scripts/kconfig $@

%config: scripts_basic outputmakefile FORCE
    $(Q)mkdir -p include/linux include/config
    $(Q)$(MAKE) $(build)=scripts/kconfig $@


“%config”这是什么,没错,有点常识的都知道,一个匹配而已,真的算运气到位啊。如果是第一次执行这个肯定会找目标“script_basic”,在哪里,同样查找一下。
PHONY += scripts_basic
scripts_basic:
    $(Q)$(MAKE) $(build)=scripts/basic
    $(Q)rm -f .tmp_quiet_recordmcount


这个目标没有依赖关系,那么肯定每次都得执行一遍,来了,“$(Q)”是什么,查找。
ifeq ($(KBUILD_VERBOSE),1)
  quiet =
  Q =
else
  quiet=quiet_
  Q = @
endif


看到没有,其实就是为空或者"@",如果熟悉Makefile语法就知道,在指令前加上它,表示执行时,不打印这条命令,当然你可以
"

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值