Linux内核构建系统之四
:),你看到这里也许会露出些许微笑,你还记得那个 "-include include/config/auto.conf".没错,针对你的make命令,GNU Make在处理任何目标之前,它一定会努力的为我们生成文件 include/cofig/auto.conf ,用的就是这里的这条对应规则.注意这里的细节,GNU Make同样也会努力重新用上面这条规则去生成 include/config/auto.conf.cmd 文件,可是无奈上面这条规则既没有依赖,又没有命令,GNU Make 是怎么也没办法生成 auto.conf.cmd.那么 auto.conf.cmd 文件又是从什么地方生成呢?答案是在生成 include/config/auto.conf 的时候.稍后,我们会看到,它同样在这个时候生成了另外一个文件 include/linux/autoconf.h. 拥有帝国一切,皆有可能。欢迎访问phome.net 既然已经说到这几个文件了,那我就预先来回答一下上面提出来的问题.什么问题?就是配置过程产生了用于记载配置结果的 .config ,那么其中的配置结果由谁使用,又是如何使用的问题.我们说在整个Linux内核系统中,有两方面的用户需要关注所记载的配置结果.一个自然是内核构建系统,它需要根据配置结果产生具有指定功能的内核映像;另外一个就是大部分代码为C语言代码的Linux内核本身,它也需要用户的配置结果,主要用来预处理C代码.前者使用配置结果,并不是直接通过 .config 文件来的,而是将其转换成两个文件:include/config/auto.conf 和 include/config/auto.conf.cmd.后者也没办法直接通过 .config 文件来使用配置结果,它需要将其转换成C语言头文件的形式使用,在这里就是文件 include/linux/autoconf.h .关于这三个文件的内容,我们稍后叙述. 还是回到上面处理 auto.conf 的规则中来,变量 KCONFIG_CONFIG 指代的就是配置文件 .config .目标 auto.conf 依赖于 .config 和 auto.conf.cmd .当GNU Make使用这条规则来remake auto.conf的时候,这两个文件即使不存在也没有关系.这样的话,GNU Make 会有上面这条没有依赖也没有命令的规则而认为这两个依赖是最新的,此时auto.conf规则的命令总是会被得到执行. 这是有意思的地方,这是不是意味着我可以在一个刚刚解压出来的Linux内核目录中直接用命令 "make ARCH=arm CROSS_COMPILE=arm-linux- zImage"来完成构建呢?咱们试一下: 拥有帝国一切,皆有可能。欢迎访问phome.net
从结果看前面都没问题,直到用conf进行一步的配置时出现了错误.至于错误原因呢,是找不到文件 .config .我们可以找出出现错误的代码,就在文件scripts/kconfig/conf.c 的main函数中,如下所示的代码片段:
关于对上面框架代码E部分中和 .config 文件无关目标的处理,这里限于篇幅,我们就不再多讲,您可自己研究.
【注意,全文可至这里浏览: http://yihect.juliantec.info/julblog//post/4/20】
本文出自 “巨立安技术老师写的文章” 博客,请务必保留此出处http://juliantec.blog.51cto.com/2773953/500223 拥有帝国一切,皆有可能。欢迎访问phome.net |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |