当前位置: 首页 > news >正文

.config、Kconfig、***_defconfig之间的关系和工作原理

.config

.config文件本质是宏定义,Makefile中引用了该文件,利用该文件中定义的开关,控制编译流程,即那些模块需要编译,那些模块不需要。与此同时,C代码中也可以使用.config中定义的宏。

.config文件在一个工程中是通常是唯一地存在的,当项目工程越来越大,模块越来越多,.config文件中的宏定义项也就越来越多,不方便管理。

而且.config是纯文本,对于大型项目的几千个配置项,管理起来实属困难。

Kconfig

Kconfig的出现就是为了解决.confg文件管理困难问题,它相当于一个模板定义了这个项目中都有哪些配置项,也就是宏定义项,且可以针对各个配置项定义好数据类型和备注说明,以及默认值。而且采用模块化设计,项目根节点下的Kconfig文件可以通过source将子模块中定义的Kconfig引用进来,方便了管理。

当然,Kconfig最终还是要转化为.config,也就是以Kconfig为模板生成.config,最终提供给Makefile使用。

至于从Kconfig模板生成.config文件,就用很多种方法,比如鼎鼎大名的menuconfig,它就是读取Kconfig,生成菜单供用户选择,最终根据用户选择的结果,生成.config文件。当然,不局限与.config文件,我们可以把.config文件换个名字,比如my_proj_defconfig,于是就有了***_defconfig文件。

***_defconfig

***_defconfig本质上就是一个.config文件的副本,也就是为了某些工作需要,提前配置好的.config文件,在有需要的时候,将其名字改为.config就可以直接给Mackefile用了,用来指引编译流程。

同时,make工具还提供了一项功能,就是通过***_defconfig生成.config文件的功能,这跟直接拷贝***_defconfig文件为.config文件的区别在于,make工具会以Kconfig为模板,不全***_defconfig中未定义,且Kconfig中有默认值的宏定义项。同时,还会去除***_defconfig中定义了,但是Kconfig中未定义的项目。

总结

Kconfig的用法通常有两种,一种是使用带UI界面的工具,比如menuconfig;另一种是使用defconfig。使用defconfig的好处在于,我们只需要在defconfig中定义少量的,我们特别关心的,与Kconfig中默认值不符的项目,然后使用make工具,以Kconfig为模板,以defconfig为修正项,生成.config文件。

注意事项

基于defconfig,使用make工具生成.config时,defconfig中新增的宏定义项目,如果未在Kconfig中定义,将不会生效,也就是不会在.config文件中出现。


http://www.mrgr.cn/news/31323.html

相关文章:

  • 对于C++继承中子类与父类对象同时定义其析构顺序的探究
  • 容器化安装Jenkins部署devops
  • Go Testify学习与使用
  • 预测合理交易目标:中断形态趋势分析
  • 微服务架构陷阱与挑战
  • 4. 密码协议
  • 【C++篇】C++类与对象深度解析(六):全面剖析拷贝省略、RVO、NRVO优化策略
  • 分布式消息中间件kafka
  • neo4j节点关联路径的表示、节点的增删改查
  • 【软件基础知识】什么是 API,详细解读
  • Langchain-chatchat源码部署及测试实验
  • 埃氏筛详解
  • .NET Core中的时区转换问题
  • YOLOv9改进系列,YOLOv9主干网络替换为RepViT (CVPR 2024,清华提出,独家首发),助力涨点
  • 【二级C语言考试】自定义数据类型
  • 设计模式之适配器模式
  • 4款音频转文字在线转换工具帮你解锁新的记录模式。
  • Vue-router路由
  • 电脑连接手机热点只能登陆qq和微信 浏览器无法正常上网的原因
  • 时间复杂度和空间复杂度