Linux Kernel Makefile解析(一)

闲置了这么久的博客,也要拾起来了(为自己的懒惰感到羞愧)。最近一段时间一直和linux的核心代码打交道,也积累了一些经验,现在想把自己对linux的理解写下来,也欢迎朋友指正。

我认为对linux代码的阅读首先要读懂她的Makefile,Makefile是代码的外部框架,熟悉她会让我们对Linux的代码层次有一定的了解,这对我们深读代码很有帮助。工作过程中接手一个新项目的维护工作时,我也会首先读她的Makefile,因为这在一定程序上代表了项目开发者的架构思路,这也是我要学习的地方。

好了,现在我们开始我们的代码之旅。。。

编译内核首先要执行make menuconfig,那我们就从这条命令开始。(P.S. 内核版本 3.8.0)

1. Makefile变量的初始化

KBUILD_EXTMOD 为空,因为命令行中没有”M= xxx“,KBUILD_SRC为空,因为没有“O = xxx“。


no-dot-config-targets := clean mrproper distclean \
             cscope gtags TAGS tags help %docs check% coccicheck \
             $(version_h) headers_% archheaders archscripts \
            no-dot-config-targets kernelversion %src-pkg

config-targets := 0
mixed-targets  := 0
dot-config     := 1

ifneq ($(filter $(no-dot-config-targets), $(MAKECMDGOALS)),)
    ifeq ($(filter-out $(no-dot-config-targets), $(MAKECMDGOALS)),)
        # MAKECMDGOALS 中仅包含no-dot-config-targets提供的命令
        dot-config := 0
    endif
endif

ifeq ($(KBUILD_EXTMOD),)
        ifneq ($(filter config %config,$(MAKECMDGOALS)),)
        # MAKECMDGOALS 包含config
                config-targets := 1
                ifneq ($(filter-out config %config,$(MAKECMDGOALS)),)
                # MAKECMDGOALS 还包含其他命令
                        mixed-targets := 1
            
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值