Kconfig和makefile的关系

转载 2017年01月03日 21:49:32

文章的原地址是:

http://wenku.baidu.com/link?url=Yl5eiPf3P7TMhk24Kl5bMMNyWEM4ctHdT46M4ltz07qBPuWswCid3rGC5zxaGPLa3sawP8m4ZaqB0dIXmhlKF_2yBMUvxt9c5Q70MOevdhS

linux 内核中 Kconfig 文档的作用

内核源码树的目录下都有两个文档 Kconfig2.4 版本是 Config.in)和 Makefile。分布到各目录的
Kconfig 构成了一个分布式的内核配置数据库,每个 Kconfig 分别描述了所属目录源文档相关的内核
配置菜单。在内核配置
make menuconfig(xconfig )时,从 Kconfig 中读出菜单,用户选择后保
存到
.config 的内核配置文档中。 在内核编译时,主 Makefile 调用这个.config,就知道了用户的选择。
上面的内容说明了,
Kconfig 就是对应着内核的配置菜单。假如要想添加新的驱动到内核的源码中,
能够修改
Kconfig,这样就能够选择这个驱动,假如想使这个驱动被编译,要修改 Makefile
因此添加新的驱动时需要修改的文档有两种(注意不只是两个)
*Kconfig
*Makefile
要想知道怎么修改这两种文档,就要知道两种文档的语法结构。
First:Kconfig
每个菜单都有一个关键字标识,最常见的就是 config
语法:
config
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 处理器有效。
3、帮助性定义
只是增加帮助用关键字
help ---help---
Second:
内核的 Makefile
linux2.6.x/Documentation/kbuild 目录下有周详的介绍有关 kernel makefile 的知识。
内核的
Makefile 分为 5 个组成部分:
Makefile 最顶层的 Makefile
.config
内核的当前配置文档,编译时成为顶层 Makefile 的一部分
arch/$(ARCH)/Makefile 和体系结构相关的 Makefile
s/ Makefile.*
一些 Makefile 的通用规则
kbuild Makefile 各级目录下的大概约 500 个文档,编译时根据上层 Makefile 传下来的宏定义和其他
编译规则,将源代码编译成模块或编入内核。
顶层的
Makefile 文档读取 .config 文档的内容,并总体上负责 build 内核和模块。 Arch Makefile 则提
供补充体系结构相关的信息。
s 目录下的 Makefile 文档包含了任何用来根据 kbuild Makefile 构建内
核所需的定义和规则。
(其中
.config 的内容是在 make menuconfig 的时候,通过 Kconfig 文档配置的结果)
举个例子:
假设想把自己写的一个
flash 的驱动程式加载到工程中,而且能够通过 menuconfig 配置内核时选择
该驱动该怎么办呢?能够分三步:
第一:将您写的
flashtest.c 文档添加到/driver/mtd/maps/ 目录下。
第二:修改
/driver/mtd/maps 目录下的 kconfig 文档:
config MTD_flashtest
tristate “ap71 flash"
这样当 make menuconfig 时 ,将会出现 ap71 flash 选项。
第三:修改该目录下
makefile 文档。
添加如下内容:
obj-$(CONFIG_MTD_flashtest) += flashtest.o
这样,当您运行 make menucofnig 时,您将发现 ap71 flash 选项,假如您选择了此项。该选择就会
保存在
.config 文档中。当您编译内核时,将会读取.config 文档,当发现 ap71 flash 选项为 yes 时,
系统在调用
/driver/mtd/maps/下的 makefile 时,将会把 flashtest.o 加入到内核中。即可达到您的目

Kconfig menuconfig .config Makefile之间的关系及如何在内核中添加驱动

Kconfig: 内核源码中每一级目录下都会有Kconfig,其中的menu对应make menucofig中的每一个选项, source表示该目录框架下所包含各个目录或文件的 Kconfig,由此构...

linux 内核驱动动态加载和静态加载和 .config makefile kconfig 三个文件之间关系

1 静态编译驱动进内核   当我们编写完一个驱动后,我们要把它以模块形式编译或者直接编译进内核时,需要修改相关文件,其中最重要的便是kconfig ,makefile。 主要是分析一下三者...

【总结】嵌入式linux内核中Makefile、Kconfig、.config的关系及增加开机Hello World

一、增加内核启动Hello World 任务: 内核启动的时候加载Hello驱动,并打印出Hello World 步骤: (1)在drivers目录下新建hello文件夹,在里面实现相应的hello....

Linux kernel的 Makefile和Kconfig以及Make menuconfig的关系

熟悉内核的Makefile对开发设备驱动、理解内核代码结构都是非常重要的 linux2.6内核Makefile的许多特性和2.4内核差别很大,在内核目录的documention/kbuild/mak...
  • yamafe
  • yamafe
  • 2016年07月28日 09:55
  • 245

Linux kernel的 Makefile和Kconfig以及Make menuconfig的关系

熟悉内核的Makefile对开发设备驱动、理解内核代码结构都是非常重要的 linux2.6内核Makefile的许多特性和2.4内核差别很大,在内核目录的documention/kbuild/mak...
  • yarsen
  • yarsen
  • 2012年02月26日 15:44
  • 1309

Linux内核编译中遇到的Kconfig,.confi和Makefile的关系

最近在学习设备驱动程序,编写完之后进行编译之前,要在Kconfig和Makefile文件里面添加一些内容,参考了其他的源码,发现源码树目录下 几乎都有Kconfig和Makefile文件,并且在内核编...

Makefile与Kconfig

  • 2011年07月27日 00:49
  • 31KB
  • 下载

linux驱动编写(Kconfig文件和Makefile文件)

【 声明:版权所有,欢迎转载,请勿用于商业用途。  联系信箱:feixiaoxing @163.com】      在linux编写驱动的过程中,有两个文件是我们必须要了解和知晓的。这其中,一个是Kc...

Makefile and Kconfig

  • 2011年07月27日 01:23
  • 36KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Kconfig和makefile的关系
举报原因:
原因补充:

(最多只允许输入30个字)