.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.xdnf.cn/news/145919.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

29. 查看threejs自带几何体顶点

查看three.js自带几何体顶点结构,基类(父类)BufferGeometry three.js提供的矩形平面PlaneGeometry、长方体BoxGeometry、球体SphereGeometry等各种形状的几何体,他们都有一个共同的父类BufferGeometry。这意味着这些几何体有哪些属性或方法,…

Bigemap GIS Office 2024注册机 全能版地图下载软件

对于需要利用GIS信息进行编辑、设计的用户来说,Bigemap GIS Office占有重要地位。用户可以使用Bigemap GIS Office作为工具进行设计、分析、共享、管理和发布地理信息。Bigemap GIS Office能实现多种数据流转、嵌入、融合以及更多地为用户提供数据的增强处理及多种分…

如何根据协议请求去捕捉在个文件中发出去的

场景:随着业务越来越复杂,一个“触发”可能发出去N个协议,此时有某一个协议发生了报错,需要去找这个协议,去文件中走读逻辑,去找该协议,效率很慢,业务极其复杂的情况下,很…

力扣53-最大子序和(Java详细题解)

题目链接:力扣53-最大子序和 前情提要: 因为本人最近都来刷dp类的题目所以该题就默认用dp方法来做。 dp五部曲。 1.确定dp数组和i下标的含义。 2.确定递推公式。 3.dp初始化。 4.确定dp的遍历顺序。 5.如果没有ac打印dp数组 利于debug。 每一个…

【时时三省】(C语言基础)指针笔试题1

山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省 笔试题1: 创建了一个a数组 它有五个元素 五个元素分别是1 2 3 4 5 &a取出来的是一维数组的地址 然后产生的结果强制类型转换了成int &a+1就是从1跳到了5 如下图 再把这个地…

基于SSM+Vue+MySQL的酒店管理系统

系统展示 用户前台界面 管理员后台界面 系统背景 随着旅游业的蓬勃发展,酒店业作为旅游产业链中的重要一环,面临着日益增长的客户需求和激烈的市场竞争。传统的人工酒店管理模式已难以满足高效、精准、个性化的服务要求。因此,开发一套基于SS…

OpenCV特征检测(6)对初步检测到的角点位置进行亚像素级别的精炼函数cornerSubPix()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 细化角点的位置。 该函数迭代以找到角点或径向鞍点的亚像素级准确位置,如 93中所述,并如下图所示。 亚像素级准确的角点…

Unsupervised Deep Representation Learning for Real-Time Tracking

摘要 我们的无监督学习的动机是稳健的跟踪器应该在双向跟踪中有效。具体来说,跟踪器能够在连续帧中前向定位目标对象,并回溯到其在第一帧中的初始位置。基于这样的动机,在训练过程中,我们测量前向和后向轨迹之间的一致性&#xf…

AIGC实战之如何构建出更好的大模型RAG系统

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。…

zabbix“专家坐诊”第256期问答

原作者:乐维社区 原文链接:https://forum.lwops.cn/questions 问题一 Q:zabbix 6.4.18版本的,使用zabbix_agentd2监控mysql数据库,只能在界面配置mysql的相关信息吗?这个在zabbix表里面是明文存储的&#x…

VUE面试题(单页应用及其首屏加载速度慢的问题)

目录 一、单页应用 1.概念 2.单页面应用的优缺点 二、多页面应用: 1.概念 2.区别 三、SPA的实现 1.原理 2.方式: 3.Hash与History模式有什么区别 四、首屏加载速度慢如何优化 1.什么是首屏加载? 2.首屏加载慢的原因 3.如何解决…

滑动窗口(8)_最小覆盖字串

个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 滑动窗口(8)_最小覆盖字串 收录于专栏【经典算法练习】 本专栏旨在分享学习算法的一点学习笔记,欢迎大家在评论区交流讨论💌 目录 1. 题…

【C++指南】inline内联函数详解

💓 博客主页:倔强的石头的CSDN主页 📝Gitee主页:倔强的石头的gitee主页 ⏩ 文章专栏:《C指南》 期待您的关注 目录 引言 C为什么引入了inline来替代C语言中的宏 inline的基本用法 定义inline函数 inline的优势与…

Why is OpenAI image generation Api returning 400 bad request in Unity?

题意:为什么 OpenAI 图像生成 API 在 Unity 中返回 400 Bad Request 错误? 问题背景: Im testing out dynamically generating images using OpenAI API in Unity. Amusingly, I actually generated most of this code from chatGPT. 我正在…

选择优质代理IP建议分享

“在互联网的广阔世界中,代理IP作为一种重要的网络工具,扮演着连接用户与目标服务器之间的桥梁角色。不同类型的代理IP适用于不同的场景和需求,因此选择合适的代理IP类型对于提高网络访问效率、保护用户隐私至关重要。” 一、代理IP类型概述 …

感谢老美苦苦相逼,逼出华为鸿蒙PC

文|琥珀食酒社 作者 | 随风 哎,告诉大家一个不好的消息 刚刚余总说 Windows PC是最后一批了 因为美国新一轮制裁又来了 但大家别急 再告诉大家一个好消息 那就是我们的鸿蒙PC要来了 今天不是华为三折叠手机和iPhone 16首发吗 估计老美是前端时间…

MySQL高阶1873-计算特殊奖金

目录 题目 准备数据 分析数据 总结 题目 编写解决方案,计算每个雇员的奖金。如果一个雇员的 id 是 奇数 并且他的名字不是以 M 开头,那么他的奖金是他工资的 100% ,否则奖金为 0 。 返回的结果按照 employee_id 排序。 准备数据 Crea…

Java设计模式——简单工厂模式(完整详解,附有代码+案例)

文章目录 5.2简单工厂模式5.2.1 概述5.2.2 结构5.2.3 实现5.2.4 优缺点5.2.5 扩展—静态工厂 5.2简单工厂模式 5.2.1 概述 简单工厂不是一种设计模式,反而比较像是一种编程习惯。 不属于GOF的23种经典设计模式 5.2.2 结构 简单工厂包含下角色: 抽象…

ISSTA 2024现场精彩:“杰出论文奖”超半数属于中国学者

ISSTA会议是软件工程领域中最具影响力的国际会议之一,也是中国计算机学会(CCF)推荐的A类会议。 第33届ISSTA会议已于奥地利维也纳圆满结束,这场盛会已经吸引了众多来自学术界和工业界的软件测试专家、研究人员和工程师&#xff0c…

doris数据库的坑:第二弹

上一篇文章《doris数据库操作数字遇到的问题》是第一弹,文章结尾提到过doris不支持with语句,其实是因为我自己没找到正确使用的方式导致的。昨天因为客户现场有一个解析SQL的接口提示异常,所以就开始了长路漫漫的排查之旅。不过首先承认及纠正…