linux kconfig详解及语法45.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
linux kconfig详解及语法45

2.6内核的源码树目录下一般都会有两个文件:Kconfig和Makefile。分布在 各目录下的Kconfig构成了一个分布式的内核配置数据库,每个Kconfig分别 描述了所属目录源文件相关的内核配置菜单。在内核配置make menuconfig(或xconfig等)时,从Kconfig中读出配置菜单,用户配置完后保 存到.config(在顶层目录下生成)中。在内核编译时,主Makefile调用这 个.config,就知道了用户对内核的配置情况。 上面的内容说明:Kconfig就是对应着内核的配置菜单。假如要想添加新的驱动 到内核的源码中,可以通过修改Kconfig来增加对我们驱动的配置菜单,这样 就有途径选择我们的驱动,假如想使这个驱动被编译,还要修改该驱动所在目录 下的Makefile。 因此,一般添加新的驱动时需要修改的文件有两种(注意不只是两个) *Kconfig *Makefile 要想知道怎么修改这两种文件,就要知道两种文档的语法结构。 First: Kconfig 每个菜单项都有一个关键字标识,最常见的就是config。 语法: config symbol options !--[if !supportLineBreakNewLine]-- !--[endif]-- 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 !--[if !supportLineBreakNewLine]-- !--[endif]-- 更多详细的Kconfigconfig语法可参考: Second: 内核的Makefile 内核的Makefile分为5个组成部分: Makefile 最顶层的Makefile .config 内核的当前配置文档,编译时成为顶层Makefile的一部分 arch/$(ARCH)/Makefile 和体系结构相关的Makefile s/ Makefile.* 一些Makefile的通用规则 kbuild Makefile 各级目录下的大概约500个文档,编译时根据上层 Makefile传下来的宏定义和其他编译规则,将源代码编译成模块或编入内核。 顶层的Makefile文档读取 .config文档的内容,并总体上负责build内核和模 块。ArchMakefile则提供补充体系结构相关的信息。 s目录下的Makefile文 档包含了任何用来根据kbuild Makefile 构建内核所需的定义和规则。 (其中.config的内容是在make menuconfig的时候,通过Kconfig文档配 置的结果) 在linux2.6.x/Documentation/kbuild目录下有详细的介绍有关kernel makefile的知识。 最后举个例子: 假设想把自己写的一个flash的驱动程式加载到工程中,而且能够通过 menuconfig配置内核时选择该驱动该怎么办呢?能够分三步: 第一:将您写的flashtest.c 文档添加到/driver/mtd/maps/ 目录下。 第二:修改/driver/mtd/maps目录下的kconfig文档: config MTD_flashtest tristate “ap71 flash 这样当make menuconfig时 ,将会出现 ap71 flash选项。 第三:修改该

文档评论(0)

mliaojfangwi + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档