Chinaunix首页 | 论坛 | 博客
  • 博客访问: 302289
  • 博文数量: 36
  • 博客积分: 926
  • 博客等级: 准尉
  • 技术积分: 518
  • 用 户 组: 普通用户
  • 注册时间: 2012-05-16 23:49
文章分类

全部博文(36)

文章存档

2012年(36)

我的朋友

分类: LINUX

2012-05-25 17:09:09

       2.6内核的源码树目录下一般都会有两个文文:Kconfig和Makefile。分布在各目录下的Kconfig构成了一个分布式的内核配置数据库,每个Kconfig分别描述了所属目录源文件相关的内核配置菜单。在内核配置make menuconfig(或xconfig等)时,从Kconfig中读出配置菜单,用户配置完后保存到.config(在顶层目录下生成)中。在内核编译时,主Makefile调用这个.config,就知道了用户对内核的配置情况。

上面的内容说明:Kconfig就是对应着内核的配置菜单。假如要想添加新的驱动到内核的源码中,可以通过修改Kconfig来增加对我们驱动的配置菜单,这样就有途径选择我们的驱动,假如想使这个驱动被编译,还要修改该驱动所在目录下的Makefile。

因此,一般添加新的驱动时需要修改的文件有两种(注意不只是两个)

*Kconfig
*Makefile

 

下面简要介绍一下Kconfig

 

每个菜单项都有一个关键字标识,最常见的就是config。

语法:
config symbol

options

symbol就是新的菜单项,options是在这个新的菜单项下的属性和选项

其中options部分有:

1、类型定义:
每个config菜单项都要有类型定义,bool:布尔类型, tristate三态:内建、模块、移除, string:字符串, hex:十六进制, integer:整型

例如config HELLO_MODULE
bool "hello test module"

bool类型的只能选中或不选中,tristate类型的菜单项多了编译成内核模块的选项,假如选择编译成内核模块,则会在.config中生成一个CONFIG_HELLO_MODULE=m的配置,假如选择内建,就是直接编译成内核影响,就会在.config中生成一个CONFIG_HELLO_MODULE=y的配置.

2、依赖型定义depends on或requires
指此菜单的出现是否依赖于另一个定义

config HELLO_MODULE
bool "hello test module"
depends on ARCH_PXA
    这个例子表明HELLO_MODULE这个菜单项只对XScale处理器有效,即只有在选择了ARCH_PXA, 该菜单才可见(可配置)。

3、帮助性定义
只是增加帮助用关键字help或---help---

阅读(8164) | 评论(0) | 转发(3) |
0

上一篇:Makefile语法规则

下一篇:extern用法详解

给主人留下些什么吧!~~