linux make menuconfig\Makefile\Kconfig 详解

menuconfig与Kconfig入门学习 menuconfig是Linux平台用于管理代码工程、模块及功能的实用工具。menuconfig的使用方式通常是在编译系统之前在系统源代码根目录下执行命令从而打开一个图形化配置界面,再通过对各项的值按需配置从而达到影响系统编译结果的目的。menuconfig配置后的结果将会保存在对应模块根目录下的 .config 文件中。在编译时会加载.config文件中的配置项来决定编译结果。Kconfig严格来讲是一种编程语言,它拥有自己的语法及结构。 阅读详情

如果您知道.config、Makefile、Kconfig,那么您就往下练吧!

在对linux进行编译的时候,经常会用到make menuconfig这样的图形化操作界面对系统进行剪裁。但是如果拿到一份代码就贸然的使用make menuconfig这样的命令来调用图形界面的话,可能会遇到一些小小的麻烦。比如我们有自己的defconfig文件存放在arch/arm/configs文件夹下,我们希望这次进行配置之后仅仅修改我们想要剪裁或者添加的部分,但是最终发现在这个过程中没有得到我们想要的结果。在这种情况下,正确的处理方法应该是,使用cp命令将需要的defconfig文件拷贝为.config文件,然后配置ARCH为我们需要使用的架构,然后再调用make menuconfig进行配置,记得配置完成后要将.config文件回拷,从而保证修改被正确记录。因为在android等外部系统的编译过程中,仍然会使用arch/arm/configs文件下的文件进行编译。

    在采用图形化界面的情况下,通常会遇到需要在kernel文件夹之外的脚本文件中规定编译时所使用的*_defconfig文件。这样通常情况下,我们进行make menuconfig之后的文件会被arch/xxx/configs目录下的*_defconfig文件进行覆盖。而解决这个问题的办法就是在make menuconfig之后把文件中改动的部分merge到arch/xxx/configs目录下的*_defconfig文件中。这样我们的改动就会被永久的保存了。

了解了上面的机制之后,对平时进行正常的工作已经是足够了。但是如果还想继续探索更深的原理性的东西,可以继续往下看。

首先在kernel目录下进行make menuconfig操作的时候,在出现图形化操作界面之前可以看到这样一行信息

scripts/kconfig/mconf  Kconfig

这行信息告诉我们的内容足够让我们去研究半天了,首先看一下Kconfig吧,最简单的思维方式就是看一下当前目录下的Kconfig文件这个文件中告诉我们要

source "arch/$SRCARCH/Kconfig"

那现在又出现一个问题,到底宏SRCARCH是被定义为何值?

从Makefile文件中找到了这样的几行

export KBUILD_BUILDHOST := $(SUBARCH)

ARCH            ?= arm

ARCH            ?= $(SUBARCH)

CROSS_COMPILE   ?= arm-linux-androideabi-

#CROSS_COMPILE  ?= $(CONFIG_CROSS_COMPILE:"%"=%)

# Architecture as present in compile.h

UTS_MACHINE     := $(ARCH)

SRCARCH         := $(ARCH)

由此可以看出SRCARCH是指arm,那么现在就非常明确的知道了前面所讲述的

scripts/kconfig/mconf  Kconfig的后半部分,那前半部分现在就到相应的目录下去看一下,scripts/kconfig/目录中确实存在这样一个mconf文件,

此处大胆猜测,前面是一个可执行文件后面是它的参数,那么我们可以知道Kconfig文件就是整个配置的入口。此处正确与否后续再研究。

那去看一下这个Kconfig文件吧……

发现确实存在好多我们应该看到的信息,那就这样吧……

既然到了scripts/kconfig目录下,肯定要去看一下这里面很重要的文件,大家知道在看C语言代码时很重要的就是去看一下头文件,那在linux中很重要的文件就是Makefile文件和Kconfig文件。那不妨就来看一下kconfig文件,不看不知道一看真奇妙,居然木有。那好吧Makefile

xconfig: $(obj)/qconf

        $< $(Kconfig)

gconfig: $(obj)/gconf

        $< $(Kconfig)

menuconfig: $(obj)/mconf

        $< $(Kconfig)

config: $(obj)/conf

        $< --oldaskconfig $(Kconfig)

nconfig: $(obj)/nconf

        $< $(Kconfig)

oldconfig: $(obj)/conf

        $< --$@ $(Kconfig)

silentoldconfig: $(obj)/conf

        $(Q)mkdir -p include/generated

        $< --$@ $(Kconfig)

看到这,惊起一滩鸥鹭,原来你也在这里。平时用到的各种make XXconfig。

那就这样吧……

往下看,看到这里的时候我和我的小伙伴们都惊呆了

defconfig: $(obj)/conf

ifeq ($(KBUILD_DEFCONFIG),)

        $< --defconfig $(Kconfig)

else

        @echo "*** Default configuration is based on '$(KBUILD_DEFCONFIG)'"

        $(Q)$< --defconfig=arch/$(SRCARCH)/configs/$(KBUILD_DEFCONFIG) $(Kconfig)

endif

%_defconfig: $(obj)/conf

        $(Q)$< --defconfig=arch/$(SRCARCH)/configs/$@ $(Kconfig)

难道跟前面提到的arch/arm/configs/下面的各种defconfig文件有千丝万缕的剪不断理还乱的关系?我们姑且这么认为吧……但是此处好像确实没多大关系,姑且不论吧,因为这些我也没看懂。不过事实上,还真没受它的影响。

所以此处暂且不表。

有时也会遇到想打开的config文件在make menuconfig的时候无法找到的情况,这时候我们可以搜索一下想要打开的文件的依赖的config是否已经打开,这个非常关键。如果config项不是自己写的,而是内核自带的一些程序文件很容易产生这样的情况。我们可以在Kconfig文件中进行读取,并且将这些依赖的文件依次进行打开相应的config文件就可以看到需要的config项出现在眼前了,为生活中的小惊喜而感动吧,亲~

menuconfig图形化配置 当我们 make menuconfig 保存退出以后,Linux会将所有的配置选项以宏定义的形式进行保存在 include/generated/下边的autoconf.h里边。那就要修改Kconfig的配置,通过make menuconfig调出来这个配置选项表进行配置,完成之后保存退出,自动会更新到 .config中。肯定不行,因为内核会默认读取Linux内核根目录下的 .config文件 作为默认的配置选项,所以不能给他改名字。.config 配置完成内核以后生成的配置选项。2.2 :配置驱动的状态。 阅读详情

相关推荐

Linux kernel创造让make menuconfig识别到的驱动组件

1.在kernel\drivers\input\touchscreen下添加代码zhaozz.c 2.修改kernel\drivers\input\touchscreen下的Makefile文件,在末尾添加如下代码: 3.修改kernel\drivers\input\touchscreen下的Kconfig文件,在末尾添加如下代码: 4.这时候可以通过makemenuconfig,可以看到组件描述“zhaozhengzheng” 5.make,可以看到已经编译进内核了,而且报错了(.

smartvxworks的博客 303

make menuconfig 的使用-4

make menuconfig 的使用 1.怎么进入到make menuconfig图形化界面? 首先进入到内核源码的路径下,然后输入make menuconfig即可打开这个界面。 2.make menuconfig图形化界面的操作。 1. 搜索功能 输入""/""即可弹出搜索界面,然后输入我们想要搜索的内容即可。 2. 配置驱动的状态。 (1)把驱动编译编译成模块,用M来表示 (2)把驱动编译到内核里面,用*来表示 (3)不编译,我们可以使用“空格”按键来配置这三种不同的状态。 3. 退出 退出分为保存

yangbinbingA的博客 4969

Anaconda/Miniconda的删除和安装

要在 MacBook 上删除 Anaconda 或 Miniconda,并重新安装它,您可以按照以下步骤进行操作。

qq_27390023的博客 3027

用 make menuconfig 图形化配置 uboot

U-Boot图形化配置及其原理

安迪西_嵌入式攻城狮 6472

基于Simulink的输入-输出线性化精确转矩控制

本文详细介绍了基于Simulink的永磁同步电机(PMSM)输入-输出线性化(IOL)精确转矩控制方法。针对传统解耦控制在非线性转矩特性下的局限性,通过建立PMSM非线性状态空间模型,设计IOL控制器将系统转化为线性输入-输出映射。文章包含系统原理推导、Simulink建模步骤、参数整定方法和仿真结果分析,验证了IOL在高动态、宽速域工况下的优越性能(转矩误差降低90%)。最后提出了工程实现要点和扩展应用方向,为开发高精度电机驱动系统提供了实用指导。

xiaoheshang_123的博客 304

机器学习-深嵌交叉验证(Nested Cross-Validation)

Section I: Code and Analyses 第一部分:代码 from sklearn import datasets from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from sklearn.svm import SVC from...

Santorinisu Blogs 2716

linux内核kconfig objs,【已解决】Cygwin下交叉编译Linux内核在make menuconfig时出错:scripts/kconfig/mconf: scripts/kconfi...

【问题】折腾:期间,Cygwin下交叉编译linux时,去make menuconfig,虽然已经解决了:但是接着出错:CLi@PC-CLI-1 ~/develop/kernel/linux-2.6.19.1$ make menuconfigHOSTCC scripts/basic/fixdepscripts/basic/fixdep.c: In function ‘parse_config_f...

weixin_32786041的博客 1954

什么是论文的创新点?公式化描述算是创新点吗?

写科研论文时,挑战之一就是如何让你的工作“脱颖而出”,也就是要有创新性。不管实验多么精确、推导多么复杂,若没有真正的创新,论文很可能会被拒。关于如何创新问题上,我最近在看刘雪峰老师的《科技论文写作指南》,看到了很多关于写作的新论述,在这里和大家进行分享。

加百力 的技术博客 1926

Linux kernel中defconfig、 .config 、kconfig 与makefile的用途与关系

在Linux内核中,添加驱动代码一般有3部: 将代码拷贝到Linux内核代码恰当的地方 新建或者修改对应的kconfig文件 新建或修改对应的makefile文件 下面先介绍这些文件的用途,然后以具体的例子加以说明,最后解释一下它们的语法。 一、作用 Kconfig ---> (每个源码目录下)提供编译选项 .config ---> (源码顶层目录下...

羊脂球的博客 9121

OMAPL138使用UPP读写测试

UPP测试代码 #include "hw_types.h" // 宏命令 #include "hw_syscfg0_OMAPL138.h" // 系统配置模块寄存器 #include "soc_OMAPL138.h" // DSP C6748 外设寄存器 #include "psc.h" // 电源与睡眠控制宏及设备抽象层函数声明 #include "interrupt.h" // DSP C6748 中断相关应用程序接...

wangjie36的博客 1193

影楼精修-肤色统一算法解析

本文介绍了影楼精修中肤色统一算法的实现方案,并以像素蛋糕软件为例进行详细分析。肤色统一旨在通过调整人像照片中皮肤区域的颜色,使其看起来更加均匀一致。像素蛋糕软件提供了AI肤色统一和传统肤色统一两种功能,分别适用于不同需求。传统肤色统一算法通过皮肤分割、人脸检测、亮度统一和颜色统一等步骤,实现了对皮肤区域的精细调整。文章还提供了亮度统一的核心代码,并对比了传统算法与AI算法的效果,指出AI算法在自然度和亮度矫正方面表现更优。整体而言,本文为影楼精修中的肤色统一提供了实用的技术参考。

Trent1985的专栏 2068

Linux make menuconfig分析及移植kconfig用于应用程序使用

一、makefile基础 针对make 命令,其MAKECMDGOALS表示传递给make的所有的参数。 测试用例如下(该测试用例输出当前输入的命令内容,MAKECMDGOALS是一个全局变量): %: @echo $(MAKECMDGOALS) all: @echo "no param" 执行结果如下: 二、Linux make menucon...

lickylin的专栏 2302

验证码破解2.0:Python+CV大模型搞定滑块/点选验证

核心创新:基于YOLOv8+SAM CV大模型的端到端验证码破解方案,无需人工设计特征,适配多种验证码类型;核心价值高成功率:滑块验证≥95%,点选验证≥90%,远超传统CV方案;低延迟:单验证码破解≤2秒,满足高并发采集需求;行为模拟:生成符合人类操作的轨迹,绕过行为检测;易扩展:统一架构支持新增验证码类型,仅需少量标注数据微调;技术要点采用YOLOv8实现快速目标检测,SAM实现像素级分割;生成物理规律的人类轨迹,模拟真实操作行为;

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1261

linux编译配置过程,make menuconfig/.config/Kconfig的关系

  首先要知道,内核配置跟三类文件有关,包括.config,Kconfig,Makefile,其中.config只有根目录下有, Kconfig和Makefile在根目录和每个子目录都有,先说下他们的功能: Kconfig:定义配置项 Makefile:说明配置项的编译方法 .config:控制配置项编译进内核、编译成模块还是不编译 比如我要添加个wifi功能,那么首先要在网络的子目录下的Kconfig里面添加这个wifi功能的描述,添加下面内容: 然后再在这个目录下的Makefile文件中添加这个wi

qlexcel的专栏 2823

YOLOv11改进策略【卷积层】| CVPR-2024 PKI Module 获取多尺度纹理特征,适应尺度变化大的目标

PKI Module是。

Limiiiing的博客 2708

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Linux驱动,如何添加驱动,让make menuconfig识别到

在drivers/input/touchscreen/Makefile中添加驱动:obj-$(CONFIG_TOUCHSCREEN_GSLX680) += gslx680/。 只要当配置了CONFIG_TOUCHSCREEN_GSLX680的选项才会去编译gslx680目录下的内容。在配置内核的时候会通过make menuconfig来配置对应的选项。或者是直接在defconfig文件中强制设置该选项。 示例: 驱动所在的路径:firefly-sdk\kernel\drivers\input\to...

smartvxworks的博客 765

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

【linux】 Makefile之make menuconfig /uImage

欢迎转载,转载时请保留作者信息,谢谢。 邮箱:tangzhongp@163.com 博客园地址:http://www.cnblogs.com/embedded-tzp Csdn博客地址:http://blog.youkuaiyun.com/xiayulewa     config文件生成 Make menuconfig: 在src/Makefile中 %config: scripts_ba

xiayuleWA的专栏 1277

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Linux下Makefile、Kconfig、.config、make menuconfig的关系

在drivers/input/touchscreen/Makefile中添加驱动:obj-$(CONFIG_TOUCHSCREEN_GSLX680) += gslx680/。 只要当配置了CONFIG_TOUCHSCREEN_GSLX680的选项才会去编译gslx680目录下的内容。在配置内核的时候会通过make menuconfig来配置对应的选项。或者是直接在defconfig文件中强制设置该选项。 示例: 驱动所在的路径:firefly-sdk\kernel\drivers\input\to...

smartvxworks的博客 298

Linux/Android Kconfig Makefile defconfig 和 .config关系

在进行android L-》M升级时遇到打印: Root cause is probably that a dependancy declared in Kconfig is not respected or config was added in Kconfig but value not explicitly added to defconfig. Recommanded method Linux/Android Kconfig Makefile defconfig 和 .config关系

深度理解是快乐的源泉 4589

Linux 内核驱动编译:Kconfig 与 Makefile 核心玩法,触摸驱动如何编译进内核?

查看驱动目录下的makefile 可以看到很多配置项 linux\drivers\char\Makefile: obj-$(CONFIG_DTLK) += dtlk.o obj-$(CONFIG_APPLICOM) += applicom.o obj-$(CONFIG_SONYPI) += sonypi.o obj-$(CONFIG_RTC) += rtc.o obj-$(CONFIG_HPET) += hpet.o obj-$(CONFIG_EFI_RTC) += efirtc.o obj-$

欲盖弥彰1314 1792

Linux内核驱动集成指南:从Kconfig到Makefile的完整构建流程

Linux内核构建系统(Kbuild)是驱动开发的核心框架,它通过Kconfig和Makefile实现了模块化编译与配置管理。Kconfig定义了驱动的可配置选项与依赖关系,而Makefile则根据用户选择(.config文件)决定编译方式。理解这套机制对于嵌入式开发和硬件适配至关重要,它能确保驱动正确集成到内核镜像或编译为可加载模块。在实际工程中,开发者常遇到“Invalid module format”等版本兼容性问题,这通常源于内核配置或符号导出不一致。通过掌握外部模块编译、依赖项声明以及调试技巧,可

weixin_33884611的博客 460

linux kernel 配置与编译

linux内核的配置与编译过程选择九鼎s5pv210开发板移植的Linux内核,下载地址为: 链接:http://pan.baidu.com/s/1sl15QMD 密码:by3o1.首先检查Makefile 查看Makefile主要看一下Makefile中的两个变量:ARCH与CROSS_COMPILE; (1)主要是检查交叉编译工具链有没有设置对。 CROSS_COMPILE ?=

chenqiang_ace的博客 1439

linux menuconfig搜索,linux系统menuconfig解析

在对linux进行编译,常用的命令是make menuconfig,使用图形界面来对整个系统进行裁剪;这里主要就make menuconfig的执行过程进行解析。介绍跟make menuconfig这个命令相关的文件,包括三类,包括.config,Kconfig,Makefile。为什么不说三个,而说三类呢?因为Kconfig和Makefile是配合使用的,在很多的子目录都存在,而.config只...

weixin_34638141的博客 540

Linux驱动学习一(各级Kconfig和Makefile、Linux内核菜单配置界面的关系)

这里记录一下字符设备驱动Kconfig的作用。 1.在Linux内核代码中的drivers/char/Kconfig中有如下代码: (1). menu "Character devices"是菜单名,下面会看到。 (2). source "drivers/tty/Kconfig"通过source语句引入别的Konfig。 (3). config是一个关键字,定义一个设备驱动的名字,这里...

forwardjia的博客 706
上一篇: NFS
下一篇: ioctl、文件操作接口函数以及nand的升级模式的操作过程详解
野-百-合
博客等级 码龄17年 308粉丝 118原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值