Linux内核scripts/Makefile.build文件结构

本文详细解析了Linux内核构建过程中scripts/Makefile.build的作用,涵盖默认目标__build、初始化变量、自动配置文件include/config/auto.conf、辅助函数及编译标志的设置、子目录递归编译规则等内容。理解这一核心文件对于内核编译至关重要。
摘要由CSDN通过智能技术生成

1. 默认目标__build

2. 初始化obj-y、obj-m等变量

3. -include include/config/auto.conf
 内含CONFIG_RING_BUFFER=y等变量列表

4. include scripts/Kbuild.include
 内含各辅助函数、变量的定义
 如变量build := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.build obj

5. include $(kbuild-file)
 变量obj传进来目录内的Makefile(或Kbuild优先)

6. include scripts/Makefile.lib
 内含c_flags、a_flags各编译标志变量
 处理obj-y、obj-m等变量

7. 若有$(hostprogs-y)或$(hostprogs-m)需要编译主机程序,则include scripts/Makefile.host

8. builtin-target、lib-target、modorder-target

9. __build: $(if $(KBUILD_BUILTIN),$(builtin-target) $(lib-target) $(extra-y)) \
  $(if $(KBUILD_MODULES),$(obj-m) $(modorder-target)) \
  $(subdir-ym) $(always)

10. .c、.S等文件的编译规则

11. 递归进入子目录的规则
 $(subdir-ym):
  $(Q)$(MAKE) $(build)=$@

 

 

通常内核各个文件都是由-f参数使用scripts/Makefile.build文件来作为Makefile进行目标的编译

对目标的编译主要使用如下格式:

$(Q)$(MAKE) $(build)=目录 [目标]

build变量在scripts/Kbuild.include中定义

展开即:

make -f scripts/Makefile.build obj=目录 [目标]

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值