Linux 内核中 Kconfig 文件的作用和添加 menuconfig 项的方法

嵌入式开发中,需要定制或添加一些内核的功能。这里就需要配置 Kconfig 文件了。本文简单说明一下如何修改。便于需要时查找

Ref: Linux内核中Kconfig文件的作用

本文章采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。

原文发布于:https://segmentfault.com/a/1190000005182243,也是作者本人的专栏。


Kconfig的作用

Kconfig就是服务于menuconfig的一个配置文件。在对应目录下配置Kconfig文件,就是在配置对应的menuconfig项目。

有很多种配置方式,这里我暂时只是给一种简单的,也就是yes和no的方式。比如我新添加了一个配置,写了一个电机驱动设备:

config XXXX_MOTOR
    bool "xxxx motor support"
    default y
    ---help---
        Provide GPIO-based motor support.
        Designed by AMC.

其中bool表示这是一个二态值(三态值是“tristate”)。后面的“---help---”指明帮助信息,并且会在menuconfig菜单中出现。注意帮助信息并不会自动换行,一行太长显示不了的信息会被截断,所以请自行控制换行。

其他更复杂的配置方式,可以仔细看参考资料。

完成了make menuconfig之后,内核会生成.config文件,就在Linux代码树的根目录下。这个文件制定了各个模块是否会被编译,由Makefile读取并在编译过程中配置内核。

Makefile的修改

如果你修改了对应文件夹下面的Kconfig,那么你还要修改相应的Makefile才行。以前文为例,我添加了配置项在Kconfig中,这个Kconfig的位置是drivers/char/,那么我必须在这个文件夹下的Makefile中添加一行:

obj-$(CONFIG_XXXX_MOTOR) += xxxx_motor.o

其中要正确地写上目标文件的名称。然后,专心添加你的.c和.h文件就行了。由于是二态的选项,所以你的代码要么就直接被包含在内核中,要么就压根不存在。不像三态的,还有一个“M”选项。三态配置参见参考资料吧。


本文章采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。

原文发布于:https://segmentfault.com/a/1190000005182243,也是作者本人的专栏。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏木子昭的博客

简单三步, 免费建立Git私用仓库

代码需要备份, 而Github的私用仓库又实在太贵,推荐一个好东西Bitbucket Bitbucket的优势 支持中文界面 仓库私有,数量无限制,而且免...

2825
来自专栏散尽浮华

crontab日常使用梳理

在日常的运维工作中,对crontab定时任务的制定是再寻常不过的了。根据以往的使用经验梳理如下: 基本格式 : *  *  *  *  *  command 分...

3528
来自专栏smy

微信支付授权目录填写规则

微信内使用微信支付有时会遇到如下错误: 当前页面的url未注册http://xxx  这是因为当前支付页所在的公众号没有认证并开通微信支付,如果开通了那就需要到...

3466
来自专栏IMWeb前端团队

npm 中如何下载特定的组件版本

本文作者:IMWeb helinjiang 原文出处:IMWeb社区 未经同意,禁止转载 本文详细讨论了 npm 中依赖版本的版本号配置写法及比较。 ...

1996
来自专栏ytkah

微信公众平台新增获取自动回复和自定义菜单配置接口

  微信公众平台自动回复功能可以为运营者减少了重复回复消息的次数,但如果自动回复的数量多的话管理就比较麻烦;自定义菜单相当于你这个公众号的导航,但有些公众号会限...

1.1K4
来自专栏iOS122-移动混合开发研究院

【树莓派自动化应用实例】整点提醒自己休息五分钟

背景介绍 ? 我有一个习惯,定闹钟每隔60分钟左右,提醒自己休息一次。我发现自己有时候长时间思考,很容易拘泥于细节之中。适当的简单休息过后,往往会对正在解决和处...

2399
来自专栏SAP最佳业务实践

SAP最佳业务实践:ETO–报价处理(232)-10创建项目版本

image.png CN72创建项目版本 项目包含询价阶段潜在客户的重要信息。该信息在技术销售部门和客户之间的每次联系过程中会经常更新。最终产品的总成本在此信...

2693
来自专栏拂晓风起

【关于新版Cocos2dx/Cocos2d-JS】安装包和使用方式的变化

1242
来自专栏静下来

HTTP.sys 中的漏洞可能允许远程执行代码

微软2015 年 4 月 14 日发布了关于HTTP.sys 中的漏洞可能允许远程执行代码公告。 执行摘要 此安全更新可修复 Microsoft Window...

4976
来自专栏老九学堂

初识DOS

一、什么是DOS DOS是英文“Disk Operating System”的缩写,意思是磁盘操作系统。它与Windows一样都是属于操作系统,但没有Windo...

3585

扫码关注云+社区