免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5692 | 回复: 3

.config kconfig config.in Makefile 和相应的C h S文件间的关系 [复制链接]

论坛徽章:
0
发表于 2011-07-23 20:38 |显示全部楼层
本帖最后由 brauceunix 于 2011-07-23 22:34 编辑

写作原因:
在内核中,以make menuconfig 来讲解过程.
首先,我们会看到一个界面,上面有很多文字,这些文字呢基本上是Kconfig或者是config.in上的,而注意的同志会发现,前面有个[], 这个里面的值就是从.config读出来的。 当我们make menuconfig 保存退出的时候,就会把新的值写到.config去。。当我们make 的时候就会执行Makefile ...而Makefile 就会关联相应的.c ,h .S文件。 而不巧的有一件事,这个.config 是针对整个内核的,而不是针对具体哪个目录的,简单点来说,这个.config里的值就相当于C中的全局宏,在任意一个内核源码里都可以使用这个宏
使用内核中顶层目录的.config 文件和各级的Makefile能够迅速定位到一个选项需要的源码文件。  这样就可以更快速的研读源码了,他们的组合起到了一个真正寻路的作用

例子:

1. 内核:2.6.24.1, 在.config有如下选项:CONFIG_HPET_MMAP=y (故意找了一个完全不知道是什么意思的选项,这样具有代表性)

2. #cd linux-2.6.24.1

3. # grep CONFIG_HPET_MMAP * -r

4. 发现一条结果: drivers/char/hpet.c:#ifdef CONFIG_HPET_MMAP ,而没有在Makefile中发现这样的语句,说明它是一个选项宏,并不代表一个编译文件



。 应该会有CONFIG_HPET这个宏。。 发现果然有

5. # grep CONFIG_HPET * -r

6. 发现一条结果 drivers/char/Makefile:      obj-$(CONFIG_HPET)  += hpet.o (PS: 这里主要看Makefile的,不看其他结果)

7. #cd drivers/char

8. ls hpet.c

hpet.c

9. 结束了。



总结:

A. 相应的选项,如果是文件的话一般会有与之对应的文件名,只不过文件名是小写如:HPET, hpet.c

B. 选项多于一级的时候,通常是这个文件需要的参数,宏什么的,如:HPET_MMAP 就是hpet.c 需要的一个宏,具体神马用,我也不知道,这里只讲定位

C. 用这种方法,可以定义任意选项,即意味着,内核的所有的选项,都可以使用这样的方法去定位。感觉很Happy吧。

论坛徽章:
0
发表于 2011-07-23 21:37 |显示全部楼层
多谢

论坛徽章:
0
发表于 2011-07-23 22:19 |显示全部楼层
多谢
tczf1128 发表于 2011-07-23 21:37

不客气 哈。。。  不过写得还不完善,抽空我再完善一下

论坛徽章:
0
发表于 2011-12-28 16:47 |显示全部楼层
能解释以下.config 是怎么生成都就好了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP