转自: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的实现原理【转】相关推荐

  1. I.MX6ULL_Linux_系统篇(20) kernel分析-menuconfig

    linux内核的功能非常丰富,大多功能可以通过menuconfig图形界面来选择配置,但是我们面对众多的功能,往往不能快速确定配置项位置或无法理解配置项功能,本篇将对配置项做一下简要解析!(作者不建议 ...

  2. 你不知道的Linux Kernel——Linux内核的工作原理

    Linux内核更新是越来越快了,可能由于Linux的普及,大家都开始关注了,各种安全隐患也越来越多.支持Intel.Alpha.PPC.Sparc.IA-64.ARM.MIPS.Amiga.Atari ...

  3. 十六.linux开发之Kernel移植——内核的配置和编译原理

    有道云笔记地址: 详情看这里链接,记录太多,就不一一排版了. http://note.youdao.com/noteshare?id=d25dbce79566963e3699574a74048154& ...

  4. Framebuffer原理、使用、测试系列文章

    FROM: http://bbs.chinaunix.net/viewthread.php?tid=1932291&extra=page%3D1%26amp%3Bfilter%3Dtype%2 ...

  5. menuconfig配置内核

    menuconfig是linux里面的一个软件,可以配置uboot,kernel,rootf,这里以kernel为例来配置,其他的配置menuconfig的使用是一样的. 1.linux内核源码目录结 ...

  6. Linux内核的配置和编译原理

    目录 一.linux内核源码目录结构 二.内核配置和编译体验 三.内核的配置原理 四.menuconfig的使用和演示 五.menuconfig的工作原理 六.Kconfig文件详解 七.menuco ...

  7. linux内核基础和配置编译原理

    2020-8-8 星期六 北京 闷热天 总结linux内核基础和配置编译原理,分两部分总结.仅作为技术积累,方便日后查阅.参考了网上的一些笔记. 第一部分:内核基础 2.14.1.内核和发行版的区别 ...

  8. Framebuffer原理、使用、测试

    Framebuffer的配置及应用 *一.FrameBuffer的原理*  FrameBuffer 是出现在 2.2.xx 内核当中的一种驱动程序接口.  Linux是工作在保护模式下,所以用户态进程 ...

  9. linux kernel 配置与编译

    linux内核的配置与编译过程 选择九鼎s5pv210开发板移植的Linux内核,下载地址为: 链接:http://pan.baidu.com/s/1sl15QMD 密码:by3o 1.首先检查Mak ...

  10. epoll或者kqueue的原理是什么?

    首先我们来定义流的概念,一个流可以是文件,socket,pipe等等可以进行I/O操作的内核对象. 不管是文件,还是套接字,还是管道,我们都可以把他们看作流. 之后我们来讨论I/O的操作,通过read ...

最新文章

  1. 巧用宏定义进行调试 (转)
  2. 解决apache配置问题小结
  3. golang signal 信号简介
  4. proc_open 命令包含“有小问题
  5. tensorflow 转张量类型为float_TensorFlow是什么?怎么用?终于有人讲明白了
  6. Visual SourceSafe(VSS)使用手册(转载)
  7. STM32移植freemodbusRTU(hal库)从机
  8. Windows编程 第七回 绘图课(上)
  9. 360更新补丁一直提示正在安装_Microsoft .NET Framework 4.7 安装失败,产生阻滞的问题...
  10. [Everyday Mathematics]20150112
  11. python语言网课答案_看我们,智慧树python语言入门教程答案
  12. 阿里图标css的使用中的使用方法,iconfont阿里巴巴矢量图标库的正确使用方法
  13. 深海迷航坐标传送代码_深海迷航代码大全_深海迷航作弊码汇总及代码使用教程_咖绿茵手游站...
  14. 银行机构的分类、特点及转型方向
  15. 记事本开发 dos下编译java 多个类文件_通过记事本编写的java代码通过()命令运行。_学小易找答案...
  16. python切片练习(League of Legends)
  17. 用JLINK烧写U-boot到Nand Flash中
  18. 简单元胞自动机实现—Python
  19. TM1637数码管显示
  20. legacy引导gpt分区_安装win10用uefi还是legacy引导模式?(最全分析)

热门文章

  1. 疫情下的创业品牌如何逆风翻盘?
  2. PostgreSQL逻辑优化——整体架构
  3. 损失函数、tensorflow2实现——Python实战
  4. 优化理论12---- Rosen的梯度投影法 、投影矩阵、 既约梯度法
  5. matplotlib无法显示图片的解决方法(non-gui backend)
  6. Machine Learning - XVIII. Application Example Photo OCR应用实例-照片OCR(Week10)
  7. 如何提高go代码覆盖率_如何提高代码质量?
  8. python测试用例队列_Python tornado队列示例-一个并发web爬虫代码分享
  9. mysql设置主键可视化_mysql怎么设置主键自
  10. ubuntu系统的python3.6升级到python3.7