kernel——make menuconfig的实现原理【转】
转自:https://blog.csdn.net/hpr1992/article/details/41048693
1、系统移植可以分为配置系统和编译系统两大块,其中通过命令makemenuconfig进行图形化界面配置的步骤为配置系统。2、内核源码包中,不同的目录收集不同的代码块,要通过配置系统将“有用”的代码块“挑选”出来,以便给后续的编译系统编译。要弄清make menuconfig命令的实现原理,通过以下问题的答案就可以知道。一、“配置菜单界面”是如何出来的?执行make menuconfig的时候,会执行顶层的Makefile,[cpp] view plain copy%config: scripts_basic outputmakefile FORCE $(Q)mkdir -p include/linux include/config $(Q)$(MAKE) $(build)=scripts/kconfig $@ 注意:$(build) =scripts/kconfig,build是编译规则,$(build) =scripts/kconfig实质是:-f scripts/kconfig/Makefile则:$(Q)$(MAKE) $(build)=scripts/kconfig $@ ==》make -f scripts/kconfig/Makefile menuconfig-f:指定执行某个Makefile文件,表示到scripts/kconfig目录下Makefile文件中,生成目标menuconfig接下来,scripts/kconfig/Makefile找到目标所在的代码:[cpp] view plain copymenuconfig: $(obj)/mconf $< $(Kconfig) obj := $(CURDIR)Kconfig :=arch/$(SRCARCH)/KconfigSRCARCH := $(ARCH)而ARCH变量在顶层目录的Makefile中早已赋值arm所以: [cpp] view plain copymenuconfig: scripts/kconfig/mconf scripts/kconfig/mconf arch/arm/Kconfig 当我们执行命令make menuconfig时,(1)先创建两个二级目录include /linux 和 include/config,(2)接着把scripts/kconfig/里面的可执行文件mconf运行起来,有能力的话可以详看scripts/kconfig/mconf.c,根据文件arch/arm/kconfig内容,显示出一个菜单界面。其实,mconf运行起来,首先是“画出”菜单界面(显示内容则根据各级目录的Kconfig文件),然后查看当前目录有没有存在.config文件,若没有,则按照默认显示到菜单里面;若存在.config,则会把它读出来存到内存某块区域,在逐行逐行解析它的内容,再把读出的内容更新到菜单。最后会保存在.config文件(当前目录中)。二、kconfig文件的语法分析?kconfig的总入口是arch/arm/kconfig,不是源码顶层的kconfig,入口一定是根据某款平台的。概括起来,kconfig的用法有三种:(1)添加一个菜单选项,菜单选项不是代表某种功能,只有进去菜单里面,才能选择功能属性,意义不大。如添加一个helloworld菜单。格式:menu “xxxxxx” ………… endmenu(2)定义一个功能属性选项,一个功能属性对应一块代码。定义的功能属性最好放在菜单选项里面。如直接添加一个功能属性printf hello格式:config HAVE_PWM config XXX (XXX是宏) bool (二态,0或1,后面带提示内容,几乎都有) default y (y默认是选中的,n默认则是不选) select 宏1 ( 要是当前的功能属性选上,则宏1代表的功能属性一定自动选上,用户不能修改。 ) depend on 宏 2 ( 当前功能属性依赖于宏2的功能属性,若宏2功能属性没有选上,则当前功能选项不能显示出来。) help 帮助信息 xxxxxxx(3)导入别的目录的Kconfigsource “xxx/xxx/kconfig” 可以这样用法:menu “xxxxxx”config HAVE_PWMboolsource “xxx/xxx/kconfig”endmenu
转载于:https://www.cnblogs.com/sky-heaven/p/9182875.html
kernel——make menuconfig的实现原理【转】相关推荐
- I.MX6ULL_Linux_系统篇(20) kernel分析-menuconfig
linux内核的功能非常丰富,大多功能可以通过menuconfig图形界面来选择配置,但是我们面对众多的功能,往往不能快速确定配置项位置或无法理解配置项功能,本篇将对配置项做一下简要解析!(作者不建议 ...
- 你不知道的Linux Kernel——Linux内核的工作原理
Linux内核更新是越来越快了,可能由于Linux的普及,大家都开始关注了,各种安全隐患也越来越多.支持Intel.Alpha.PPC.Sparc.IA-64.ARM.MIPS.Amiga.Atari ...
- 十六.linux开发之Kernel移植——内核的配置和编译原理
有道云笔记地址: 详情看这里链接,记录太多,就不一一排版了. http://note.youdao.com/noteshare?id=d25dbce79566963e3699574a74048154& ...
- Framebuffer原理、使用、测试系列文章
FROM: http://bbs.chinaunix.net/viewthread.php?tid=1932291&extra=page%3D1%26amp%3Bfilter%3Dtype%2 ...
- menuconfig配置内核
menuconfig是linux里面的一个软件,可以配置uboot,kernel,rootf,这里以kernel为例来配置,其他的配置menuconfig的使用是一样的. 1.linux内核源码目录结 ...
- Linux内核的配置和编译原理
目录 一.linux内核源码目录结构 二.内核配置和编译体验 三.内核的配置原理 四.menuconfig的使用和演示 五.menuconfig的工作原理 六.Kconfig文件详解 七.menuco ...
- linux内核基础和配置编译原理
2020-8-8 星期六 北京 闷热天 总结linux内核基础和配置编译原理,分两部分总结.仅作为技术积累,方便日后查阅.参考了网上的一些笔记. 第一部分:内核基础 2.14.1.内核和发行版的区别 ...
- Framebuffer原理、使用、测试
Framebuffer的配置及应用 *一.FrameBuffer的原理* FrameBuffer 是出现在 2.2.xx 内核当中的一种驱动程序接口. Linux是工作在保护模式下,所以用户态进程 ...
- linux kernel 配置与编译
linux内核的配置与编译过程 选择九鼎s5pv210开发板移植的Linux内核,下载地址为: 链接:http://pan.baidu.com/s/1sl15QMD 密码:by3o 1.首先检查Mak ...
- epoll或者kqueue的原理是什么?
首先我们来定义流的概念,一个流可以是文件,socket,pipe等等可以进行I/O操作的内核对象. 不管是文件,还是套接字,还是管道,我们都可以把他们看作流. 之后我们来讨论I/O的操作,通过read ...
最新文章
- 巧用宏定义进行调试 (转)
- 解决apache配置问题小结
- golang signal 信号简介
- proc_open 命令包含“有小问题
- tensorflow 转张量类型为float_TensorFlow是什么?怎么用?终于有人讲明白了
- Visual SourceSafe(VSS)使用手册(转载)
- STM32移植freemodbusRTU(hal库)从机
- Windows编程 第七回 绘图课(上)
- 360更新补丁一直提示正在安装_Microsoft .NET Framework 4.7 安装失败,产生阻滞的问题...
- [Everyday Mathematics]20150112
- python语言网课答案_看我们,智慧树python语言入门教程答案
- 阿里图标css的使用中的使用方法,iconfont阿里巴巴矢量图标库的正确使用方法
- 深海迷航坐标传送代码_深海迷航代码大全_深海迷航作弊码汇总及代码使用教程_咖绿茵手游站...
- 银行机构的分类、特点及转型方向
- 记事本开发 dos下编译java 多个类文件_通过记事本编写的java代码通过()命令运行。_学小易找答案...
- python切片练习(League of Legends)
- 用JLINK烧写U-boot到Nand Flash中
- 简单元胞自动机实现—Python
- TM1637数码管显示
- legacy引导gpt分区_安装win10用uefi还是legacy引导模式?(最全分析)
热门文章
- 疫情下的创业品牌如何逆风翻盘?
- PostgreSQL逻辑优化——整体架构
- 损失函数、tensorflow2实现——Python实战
- 优化理论12---- Rosen的梯度投影法 、投影矩阵、 既约梯度法
- matplotlib无法显示图片的解决方法(non-gui backend)
- Machine Learning - XVIII. Application Example Photo OCR应用实例-照片OCR(Week10)
- 如何提高go代码覆盖率_如何提高代码质量?
- python测试用例队列_Python tornado队列示例-一个并发web爬虫代码分享
- mysql设置主键可视化_mysql怎么设置主键自
- ubuntu系统的python3.6升级到python3.7