转自:https://blog.csdn.net/hpr1992/article/details/41048693

、系统移植可以分为配置系统和编译系统两大块,其中通过命令makemenuconfig进行图形化界面配置的步骤为配置系统。

、内核源码包中,不同的目录收集不同的代码块,要通过配置系统将“有用”的代码块“挑选”出来,以便给后续的编译系统编译。

要弄清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 copy menuconfig: $(obj)/mconf
$< $(Kconfig) obj := $(CURDIR) Kconfig :=arch/$(SRCARCH)/Kconfig SRCARCH := $(ARCH) 而ARCH变量在顶层目录的Makefile中早已赋值arm 所以:
[cpp] view plain copy menuconfig: scripts/kconfig/mconf
scripts/kconfig/mconf arch/arm/Kconfig 当我们执行命令make menuconfig时,()先创建两个二级目录include /linux 和 include/config,()接着 把scripts/kconfig/里面的可执行文件mconf运行起来,有能力的话可以详看scripts/kconfig/mconf.c,根据文件arch/arm/kconfig内容,显示出一个菜单界面。其实,mconf运行起来,首先是“画出”菜单界面(显示内容则根据各级目录的Kconfig文件),然后查看当前目录有没有存在.config文件,若没有,则按照默认显示到菜单里面;若存在.config,则会把它读出来存到内存某块区域,在逐行逐行解析它的内容,再把读出的内容更新到菜单。 最后会保存在.config文件(当前目录中)。 二、kconfig文件的语法分析? kconfig的总入口是arch/arm/kconfig,不是源码顶层的kconfig,入口一定是根据某款平台的。 概括起来,kconfig的用法有三种: ()添加一个菜单选项,菜单选项不是代表某种功能,只有进去菜单里面,才能选择功能属性,意义不大。 如添加一个helloworld菜单。 格式: menu “xxxxxx”
…… ……
endmenu ()定义一个功能属性选项,一个功能属性对应一块代码。定义的功能属性最好放在菜单选项里面。 如直接添加一个功能属性printf hello 格式: config HAVE_PWM config XXX (XXX是宏)
bool (二态,0或1,后面带提示内容,几乎都有)
default y (y默认是选中的,n默认则是不选)
select 宏1 ( 要是当前的功能属性选上,则宏1代表的功能属性一定自动选上,用户不能修改。 )
depend on 宏 ( 当前功能属性依赖于宏2的功能属性,若宏2功能属性没有选上,则当前功能选项不能显示出来。)
help 帮助信息
xxxxxxx ()导入别的目录的Kconfig source “xxx/xxx/kconfig”
可以这样用法: menu “xxxxxx” config HAVE_PWM bool source “xxx/xxx/kconfig” endmenu

kernel——make menuconfig的实现原理【转】的更多相关文章

  1. linux kernel的cmdline参数解析原理分析【转】

    转自:https://blog.csdn.net/skyflying2012/article/details/41142801 版权声明:本文为博主kerneler辛苦原创,未经允许不得转载. htt ...

  2. 朱辉(茶水): Linux Kernel iowait 时间的代码原理

    本文系转载,著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 作者: 朱辉(茶水) 来源: 微信公众号linux阅码场(id: linuxdev) 作者介绍 朱辉,个人主页 htt ...

  3. Framebuffer原理、使用、测试系列文章,非常好的资料,大家一起学习

    转载:http://blog.csdn.net/tju355/article/details/6881372 *一.FrameBuffer的原理* FrameBuffer 是出现在 2.2.xx 内核 ...

  4. Linux kernel4.4.12 添加make menuconfig 可选项

    Linux kernel 源码添加可选项 闲来无事,顺便记录一篇在Linux kernel make menuconfig 内添加一个可选项. 说不定将来就要用到这个东西呢. linux kernel ...

  5. AM335x kernel 4.4.12 i2c eeprom AT24c02驱动移植

    kernel 4.4.12 i2c eeprom AT24c02驱动移植 在kernel make menuconfig ARCH=ARM 中打开: Device Drivers ---> Mi ...

  6. 关于uboot和kernel的一些理解

    经过多次的修改和实验,终于能够在mini2440开发板上进行各种uboot和kernel的挂载实验了,在此期间学习到了很多知识,也理解了一些知识1->分区uboot和kernel的分区表要一致u ...

  7. make menuconfig 笔记

    由于公司对于新CPU开发很着急,似乎明年2月份就能达到量产的目标.之前只有2个人在做平台级的开发,于是就另外抽调人手,而我就在其中.我之所心搞openwrt是因为硬件部门的样机一直未有时间表,而我总不 ...

  8. Linux kernel 生成 /dev/spidev*

    最近在调试一个 spi 转 4 路uart 的设备 先从spi 底层开始做起 kernel make menuconfig Device Drivers ---> [*] SPI support ...

  9. (转)分析kernel的initcall函数

      分析kernel的initcall函数   来源: ChinaUnix博客 日期: 2008.07.19 21:24 (共有条评论) 我要评论   分析kernel的initcall函数Autho ...

随机推荐

  1. 求二维数组联通子数组和的最大值 (联通涂色) beta!

    算法十分臃肿,效率捉鸡,不知用了多少循环,还有bug...任重道远,编程之美. 思想:按行遍历,找出每行的最大子数组.若行间都联通,行最大子数组相加后,再加上独立的正数.若行间不连通,找出较大子路径, ...

  2. Django 图片上传、存储与显示

    参考博客:http://www.cognize.me/2016/05/09/djangopic 开始之前要先安装python图像处理库:pip install --use-wheel Pillow 一 ...

  3. jQuery~DOM基础操作

    操作DOM 1.什么是DOM:document object model文档对象模型 2.树形结构 3.什么是节点(node):DOM结构中最小单位,元素.文本.属性...创建节点 var $div ...

  4. Java学习之静态代码块

    一.static(在方法区有一块固定的存储区域,由于优先于对象存在,所以可以被所有对象共享) 在定义方法的时候你写main方法的类加static, 写普通类的写方法的时候就不要加static 1.st ...

  5. POJ 2584 T-Shirt Gumbo

    T-Shirt Gumbo Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 3689   Accepted: 1755 Des ...

  6. Django_终端打印原生SQL语句

    打印所有的sql语句 在Django项目的settings.py文件中,在最后复制粘贴如下代码: LOGGING = { 'version': 1, 'disable_existing_loggers ...

  7. sql知识收集

    在SQL Server里面有top关键字可以很方便的取出前N条记录,但是Oracle里面却没有top的使用,类似实现取出前N条记录的简单方法如下: 方法1:利用ROW_NUMBER函数 取出前5条记录 ...

  8. ssm框架配置过程

    1.pom.xml配置 1.1<build>标签中配置<plugins>和<resources>,即插件和资源文件 1.2 <properties>标签 ...

  9. SPOJ6340 ZUMA - ZUMA

    题意:n个珠子排成一排,都有各自的颜色. 你可以选择不少于w个连续同色的珠子消掉,也可以先放着.你还可以任意插入任意颜色的珠子. 求全部消掉至少要插入几个珠子. 解: 什么毒瘤东西...... 有个十 ...

  10. 监控IIS的运行状态

    IIS经常出现假死的情况,具体什么时候会出现假死,我就不说了,今天我要写的是如何监控IIS的状态. 程序的功能是:如果IIS是为运行的状态,就重启IIS,如果IIS的连接数达到了设置的连接数,也重启I ...