2.1分析内核启动——查看配置文件.config

我们知道make menuconfig的菜单是在.config文件中查找配置

里面有很多配置项为y(加入配置)、m(以模块形式加入,如有一些驱动)。像我们的DM9000(网卡)就是配置为y

 

我们随便搜一个配置,如CONFIG_DM9000,grep "CONFIG_DM9000" * -nwR

会发现这四个文件

  • (c源码)arch/arm/mach-at91/board-sam9261ek.c:79:#if defined(CONFIG_DM9000)

  • (子目录makefile)drivers/net/Makefile:197:obj-$(CONFIG_DM9000) += dm9dev9000c.o

  • include/config/auto.conf:143:CONFIG_DM9000=y

  • include/linux/autoconf.h:144:#define CONFIG_DM9000 1

c文件中使用到了CONFIG_DM9000的宏,那么这个宏是在哪里定义,显然对于c语言,宏只能在c文件或者h文化定义。是在include/linux/autoconf.h:144:#define CONFIG_DM9000 1中定义。这里我们可以猜测include/linux/autoconf.h是自动生成的,内容来源与.config。autoconf.h里面的内容都是1。就是说不管配置项是y还是m,最后生成的autoconf.h里都被定义为1

                 (autoconf.h)

那么y和m的差别体现在哪里呢——子目录的Makefile中

这里的意思是obj  -$(CONFIG_DM9000)的值编译成dm9dev9000c.o。

显然$(CONFIG_DM9000)可能是有分y和m的,在include/config/auto.conf中被定义,果然,里面有m和y的定义

           (auto.conf)

到现在我们知道了,y和m的差别在子目录的Makefile中体现

obj  -y +=xxx.o (编译进内核里去)

obj -m +=xxx.o(最后会被编译成可加载模块xxx.ko)

 

还可以知道这两个文件

include/config/auto.conf:143:CONFIG_DM9000=y(被子目录Makefile用到)

include/linux/autoconf.h:144:#define CONFIG_DM9000 1(被c函数用到)

都是由.config生成的

 

下一节进入分析内核的Makefile

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值