Linux内核构建系统之四
回到我们的主框架上面来,讨论完配置目标的处理后,就轮到框架中 "ifeq ($(config-targets),1)-endif" 块的 else 部分了.这部分是为了处理那些构建目标以及和.config无关的目标,其对这些目标处理的代码都位于框架中的E部分中.在E部分之前,有一个不小的 "ifeq ($(dot-config),1)-endif" 块,我们暂先不去理会,且看这个 ifeq-endif 块之前有一小段注释:
拥有帝国一切,皆有可能。欢迎访问phome.net 这段注释字面上的意思是说 "ifeq ($(config-targets),1)-endif" 块的 else 部分处理的都是 Build targets,也就是除了配置目标之外的其他目标.注意他这里对 Build targets 分类方法,其实和我们之前的分类方法是有差异的,他这里所谓的 Build targets ,除了包括我们之前分类中所说的构建目标外,还包括之前我们说的和 .config 文件无关的那些目标.这其实是对同个东西的两种不同分类罢了,不影响我们的分析.其实不管哪种分类,都改变不了在本 else 部分既处理真正的构建目标,又处理那些和 .config 文件无关目标的事实. 好,鉴于我们已有这样的事实认同.那接下来理解前面说的那个不小的 "ifeq ($(dot-config),1)-endif" 块就比较容易了.很显然这个时候如果变量 dot-config 等于 1,那说明针对的是那些真正的构建目标, 当 dot-config 等于 1 时,构建系统 GNU Make 是这样一个大致的读取Makefile的流程: 那如果你的子makefile是被 "include" 所包含的,但是这个makefile本身不存在,且无法用一条规则去Remake出来,那么 GNU Make就会报错并退出.相反,如果你用的是 "-include",那么 GNU Make就什么都不做,就好象什么也没发生过那样继续处理后面的事情. 接下来回到主框架,假如你的 make 命令是 "make ARCH=arm CROSS_COMPILE=arm-linux- zImage",那么dot-config 等于 1,并且变量 KBUILD_EXTMOD 会等于空.构建系统又会先尝试性的包含文件 include/config/auto.conf.cmd,然后继续处理主框架中的 G1部分.我们先看看G1部分的代码:
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |