Linux下的配置工具menuconfig+配置文件(Kconfig/.config/defconfig)

本文介绍了Linux开发中配置管理的重要工具menuconfig,它基于Kconfig文件提供图形化配置界面。menuconfig通过make menuconfig命令调用,显示由Kconfig文件定义的配置选项。所有配置最终汇总到.config文件,影响编译过程。此外,还提到了defconfig作为默认配置的基础,并简单提及Makefile在自动化编译中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们都知道,嵌入式开发中,或者说C语言中,配置基本都是通过宏定义来决定的,在MCU开发中,代码量比较小,配置项也比较少,我们直接修改对应的宏定义即可。

但是,Linux开发中,操作系统、驱动部分还有应用部分加起来,代码量极大,配置项目也非常多,这时候,就需要对这些配置项进行统一管理。

配置管理工具menuconfig

主要参考如下文章:

Linux下menuconfig与Kconfig基础知识概要_linux menuconfig-CSDN博客

menuconfig是Linux平台用于管理代码工程、模块及功能的实用工具。

该工具通过读取Linux下的配置文件信息,并以图形化的方式展示出来,然后可供我们进行设置。示例界面如下:

这上面的选项都是我们在配置文件里编辑好的,该工具只是读取并显示出来。

怎么调出该工具呢?

通常是在编译系统之前在系统源代码根目录下执行 make menuconfig 命令从而打开一个图形化配置界面,再通过对各项的值按需配置从而达到影响系统编译结果的目的。

注意,这里就是在编译的指令make后面再加个menuconfig,但是,实际工作中,有些企业会将make等一系列指令封装成shell脚本,然后.sh执行脚本来实现编译。这种情况下,我们就是在编译指令后面加个menuconfig即可,也就是说,不一定就是直接使用make menuconfig,假设编译指令是xxx,那么调出menuconfig的指令方式就是xxx menuconfig

并且,执行该指令,并不会进行编译,只是会读取配置并显示出来。

脚本执行后,其实这里都会展开对应的命令行显示

假如我们打开了一个menuconfig配置界面

界面最上方是一些操作提示,中间主要内容就是读取出来的配置项。

像上面的那种:

✔如果是后面有--->的,表示是个目录,敲回车后就会继续进入下级目录;

✔前面有[ ]的,是表示当前配置是选中还是不选中,可以按空格键来切换,如果选中,就会有个星号[*];

✔如果前面是个(),一般就表示是要输入设定值,我们按回车然后就会弹出参数输入界面;

另外,还有些基本操作,比如:

✔连按两次Esc就会回退一次;

✔按?就会弹出对应配置项的一些信息比如所在路径等;

搜索关键词

在menuconfig选项界面按下快捷键“/”,就能弹出搜索框,搜索需要的关键词即可。

注意,虽然menuconfig界面显示的是提示语,但是搜索时需要输入的是配置项,而不是提示语,否则搜不到,因为配置项是唯一的,而提示语是不唯一的。

搜索关键词有多个选项,就会用序号显示出来,然后按对应的数字就会进入对应的设置

注意,按数字时,对应选项需要出现在界面上,看不到的按数字没法跳转。

依赖选项

有时候,如果打开没有该选项,则可能是因为依赖不满足,需要先打开依赖,依赖一般是要求被打开,后面的括号里是表示依赖的当前状态。

直接保存到.config

双击Esc是后退一步,如果操作了很多步骤,退出到保存就比较麻烦。

如果直接保存?

按左右键切换到save

make: arm-xilinx-linux-gnueabi-gcc: Command not found CLEAN scripts/basic make[2]: arm-xilinx-linux-gnueabi-gcc: Command not found CLEAN scripts/kconfig HOSTCC scripts/basic/fixdep HOSTCC scripts/kconfig/conf.o HOSTCC scripts/kconfig/confdata.o HOSTCC scripts/kconfig/expr.o LEX scripts/kconfig/lexer.lex.c YACC scripts/kconfig/parser.tab.[ch] HOSTCC scripts/kconfig/lexer.lex.o HOSTCC scripts/kconfig/parser.tab.o HOSTCC scripts/kconfig/preprocess.o HOSTCC scripts/kconfig/symbol.o HOSTLD scripts/kconfig/conf scripts/Kconfig.include:35: compiler 'arm-xilinx-linux-gnueabi-gcc' not found scripts/kconfig/Makefile:90: recipe for target 'xilinx_zynq_defconfig' failed make[1]: *** [xilinx_zynq_defconfig] Error 1 Makefile:567: recipe for target 'xilinx_zynq_defconfig' failed make: *** [xilinx_zynq_defconfig] Error 2 UPD scripts/kconfig/mconf-cfg HOSTCC scripts/kconfig/mconf.o HOSTCC scripts/kconfig/lxdialog/checklist.o HOSTCC scripts/kconfig/lxdialog/inputbox.o HOSTCC scripts/kconfig/lxdialog/menubox.o HOSTCC scripts/kconfig/lxdialog/textbox.o HOSTCC scripts/kconfig/lxdialog/util.o HOSTCC scripts/kconfig/lxdialog/yesno.o HOSTLD scripts/kconfig/mconf scripts/kconfig/mconf Kconfig scripts/Kconfig.include:35: compiler 'arm-xilinx-linux-gnueabi-gcc' not found scripts/kconfig/Makefile:33: recipe for target 'menuconfig' failed make[1]: *** [menuconfig] Error 1 Makefile:567: recipe for target 'menuconfig' failed make: *** [menuconfig] Error 2 Makefile:613: include/config/auto.conf: 没有那个文件或目录 Makefile:660: include/config/auto.conf.cmd: 没有那个文件或目录 make: arm-xilinx-linux-gnueabi-gcc: Command not found *** *** Configuration file ".config" not found! *** *** Please run some configurator (e.g. "make oldconfig" or *** "make menuconfig" or "make xconfig"). *** Makefile:663: recipe for target '.config' failed make: *** [.config] Error 1
03-21
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值