make menuconfig

news2024/9/23 13:30:33

本文不是分析Linux的make menuconfig,而是如何将Linux这套机制适配到自己的项目里。

Linux内核配置工具会使用到menuconfig。menuconfig会用到mconf、conf两个命令。这两个命令是编译内核自动生成的。网上有开源的实现,我们下载下来自己编译:

github链接:

menuconfig

下载后按照说明编译即可。

Kconfig

Kconfig文件定义了配置。

执行make menuconfig会根据具体的Kconfig加载界面。

先编写一个最简单的makefile,内如如下。

%config:
    mconf Kconfig

写一个简单的Kconfig。 

menu "toolchain"

choice
	prompt "chose tool chain"
	default gcc
config gcc
	bool "gcc"

config armcc
	bool "armcc"

config mingw
	bool "mingw"

endchoice

config ARGFLAGS
	string "argflags"
	depends on gcc
	default "-c -o -g -list"

config DEBUG
	bool "debug"
	default n

endmenu

menu "platform"

choice
	prompt "chose linux"
	default linux
config linux
	bool "linux"

config windows
	bool "windows"

config no_os
	bool "no_os"

endchoice

endmenu

具体的Kconfig语法可以参考别的资料,这里就不介绍了。

执行:

make menuconfig

就会显示配置界面 :

修改保存后,会生成.config配置文件。 

这样我们就完成了一个简单的menuconfig。

config.h

.config是给make编译使用的。如果代码里需要使用相应的配置,需要转换成头文件。

%config:
    mconf Kconfig
    conf Kconfig --silentoldconfig config.h

 配置完后会生成config.h,这样在代码里包含头文件即可。

#define CONFIG_windows 1
#define CONFIG_mingw 1

defconfig

有时不同的项目默认的配置文件可能不同,需要需要在某些配置基础上修改。

例如有xxx_defconfig。原因就是将xxx_defconfig拷贝到.config。这样执行make menuconfig的时候就会在此基础上配置了。

%config:
    conf --defconfig=demo_defconfig Kconfig
    mconf Kconfig
    conf Kconfig --silentoldconfig config.h

例如demo_defconfig作为默认的配置。

如果包含多个xxx_defconfig。随意需要增加多个%config匹配关系。

假设有xxx_defconfig、yyy_defconfig、zzz_defconfig。

.PHONY: xxx_defconfig yyy_defconfig zzz_deconfig

%config:
	@echo "select default config"
	@mconf Kconfig
	@conf Kconfig --silentoldconfig config.h
xxx_defconfig yyy_defconfig zzz_defconfig:
	@echo "select $@"
	@conf --defconfig=$@ Kconfig
	@mconf Kconfig
	@conf Kconfig --silentoldconfig config.h

正常是可以%_defconfig的。但是虽然.PHONY配置了,还是会提示is up to date.说明匹配关系没写对。这个后面再找下原因吧。

这样就完成了menuconfig的使用规则。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1543020.html

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

相关文章

SQLiteC/C++接口详细介绍sqlite3_stmt类(七)

返回:SQLite—系列文章目录 上一篇:SQLiteC/C接口详细介绍sqlite3_stmt类(六) 下一篇: 无 22、sqlite3_column_database_name 用于返回结果集中指定列的数据库名称。如果结果集是由多个Join操作产生的,…

公域流量和私域流量该如何选择?

很多客户在做品牌推广的时候,都会犹豫应该把精力投放到公域流量还是做自己的私域流量。特别是现在流量为王的时代,大部分客户都在布局做公域流量,砸钱推广,直播带货各种形式进行曝光。 在无论是线上还是线下的公共领域&#xff0…

Microsoft Remote Desktop:无缝连接,高效远程工作的首选工具

随着科技的发展,远程工作已经成为了越来越多人的选择。在这样的背景下,一款高效、稳定且安全的远程桌面工具显得尤为重要。Microsoft Remote Desktop正是这样一款能够满足用户需求的远程桌面软件。 Microsoft Remote Desktop是微软开发的一款专为远程连…

38张最全计算机网络基础思维导图,值得一看!

你们好,我的网工朋友。 计算机网络基础知识点多且杂,想要系统地学习,思维导图肯定是必不可少的。 今天我给你找全了38张思维导图,帮助你轻松理清思路,快速掌握关键内容。 建议你收藏起来慢慢看,在看过之…

宋仕强说金航标kinghelm萨科微slkor都是网红品牌

宋仕强说金航标kinghelm萨科微slkor都是网红品牌,和宋仕强先生研究的“华强北”大ip一起,相互支持相互驱动,与金航标网站(www.kinghelm.com.cn)、萨科微网站(www.slkormicro.com)组合成为宣传矩…

2024/3/24--爬虫库

1.常用的爬虫库 (1)在setting的project里面点击Python Interpreter (2)常用的爬虫库有 import requests //用途:用于发送HTTP请求。from bs4 import BeautifulSoup //用于从HTML或XML文档中提取数据。import scrapy //一个功能强大的爬虫框架&#xf…

基于Java的流浪动物收容与领养网站

基于Java的流浪动物收容与领养网站的设计与实现 摘 要 随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和遍及使得各种信息系统的开发成为一定。 流浪动物收容与领养管理系统,主要的模块包括首页、个人中心、用户管理、员工…

.NET分布式Orleans - 2 - Grain的通信原理与定义

Grain 是 Orleans 框架中的基本单元,代表了应用程序中的一个实体或者一个计算单元。 每个Silo都是一个独立的进程,Silo负责加载、管理和执行Grain实例,并处理来自客户端的请求以及与其他Silo之间的通信。 通信原理 在相同的Silo中&#xff0…

Vue动态设置控制表格列表展现列

最近遇到一个需求,表格列表默认不展示某一列,当我设置后可以展示该列,也可以展示和隐藏别的列,起到可以对整个表格列展示隐藏控制的效果,如下示例,默认不展示“单位名称”这一列,在我点击设置齿轮后可以看到,有“单位名称”这一列,但未打钩: 当我勾中“单位名称”,…

【解决】Unity Profiler | Sempaphore.WaitForSignal

开发平台:Unity 2022 版本以上 开发语言:CSharp 6.0 编程平台:Visual Studio 2022 关键词:Sempaphore.WaitForSignal   问题背景 开发过程中出现 Waiting to excute code… 长时间阻碍运行。使用 逐对象排查法 确认影响无法运行…

mineadmin前端安装启动

在上一篇文章中, 我们已经搭建好了后端环境并启动 mineadmin 快速安装部署(docker环境) 一、下载前端项目 1、在搭建后端时候,使用php bin/hyperf.php mine:install 的时候,有一个步骤是安装前端项目的。安装目录为&a…

Altair Compose® 数学运算、编程、数据分析及可视化

Altair Compose 数学运算、编程、数据分析及可视化 分析数据、开发算法或创建模型 - Altair Compose 旨在将你的想法付诸实施。 Altair Compose 是一个用于数学计算、数据操作和可视化、编程和调试脚本的环境,对重复运算和流程自动化非常有用。Altair Compose 让用…

Chrome 插件打包发布

插件打包发布 一、打包成 zip 包 最简单方便的一种其实就是打包成 zip 包,通过下载链接进行下载,在包里面通过设置版本号和数据库的版本号对比来提醒用户进行新包的下载。 二、发布到 Chrome 应用商店 1. 注册成为开发者 在发布到 chrome 应用商店之…

C++第十一弹---类与对象(八)

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】 目录 1、友元 1.1、友元函数 1.2、友元类 2、内部类 3、匿名对象 4、拷贝对象时的一些编译器优化 总结 1、友元 友元提供了一种突破封装的方式&a…

伦敦金与纸黄金有什么区别?怎么选?

伦敦金与纸黄金都是与黄金相关的投资品种,近期黄金市场的上涨吸引了投资者的关注,那投资者想开户入场成为黄金投资者应该选择纸黄金还是伦敦金呢?两者有何区别呢?下面我们就来讨论一下。 伦敦金是一种起源于伦敦的标准化黄金交易合…

ssm+vue的消防物资存储系统(有报告)。Javaee项目,ssm vue前后端分离项目。

演示视频: ssmvue的消防物资存储系统(有报告)。Javaee项目,ssm vue前后端分离项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构&…

MixKG: Mixing for harder negative samples in knowledge graph---没代码

摘要 知识图嵌入(KGE)旨在将实体和关系表示为低维向量,用于许多现实世界的应用。实体和关系的表征是通过对比正负三联体来学习的。因此,高质量的阴性样品在KGE中是非常重要的。然而,目前的KGE模型要么依赖于简单的负抽样方法,这使…

基于深度学习的面部情绪识别算法仿真与分析

声明:以下内容均属于本人本科论文内容,禁止盗用,否则将追究相关责任 基于深度学习的面部情绪识别算法仿真与分析 摘要结果分析1、本次设计通过网络爬虫技术获取了七种面部情绪图片:吃惊、恐惧、厌恶、高兴、伤心、愤怒、自然各若…

橘子疾病检测4种YOLOV8

橘子检测YOLOV8,检测4种疾病,采用YOLOV8-NANO,训练得到PT模型转换成ONNX,最后OPENCV调用,支持C/PYTHON/ANDROID 橘子检测YOLOV8,检测4种疾病

算法---动态规划练习-2(使用最小花费爬楼梯)

使用最小花费爬楼梯 1. 题目解析2. 讲解算法原理方法一:方法二: 3. 编写代码解法一解法二 1. 题目解析 题目地址:点这里 2. 讲解算法原理 方法一: 首先,定义一个大小为n1的数组dp,用于存储到达每个台阶的最…