• Linux 内核中的 kconfig 原理


    转载:https://blog.csdn.net/qqliyunpeng/article/details/50858075
    内核源码中是怎么实现menuconfig

    1、第一步:配置生成.conf
    当执行make menuconfig时,调用的是scripts/Kconfig/Makefile文件中对menuconfig的定义

    menuconfig: $(obj)/mconf
    $< $(silent) $(Kconfig)
    展开启动的符号和一些变量

    menuconfig: scripts/kconfig/mconf
    scripts/kconfig/mconf -s Kconfig
    逻辑是这样的:
    1、menuconfig
    2、检查scripts/kconfig/mconf文件是否存在
    3、如果不存在,用Makefile中的依赖关系,生成mconf文件
    4、如果存在,执行mconf Kconfig

    执行的结构是输出图形界面。配置完成之后,在linux的家目录下生成.config隐藏文件
    其中的内容:

    CONFIG_ARM=Y
    CONFIG_MIGHT_HAVE_PCI=Y
    ...
    很明显,这些配置是不能使用的,内核在使用的时候其实是使用的根据配置文件生成的autoconf.h文件

    2、autoconf.h文件的生成

    这个文件位于include/config/generated/
    文件的生成是最顶层的makefile中的这一句:

    $(Q)$(MAKE) -f $(srctree)/Makefile silentoldconfig
    展开:

    @/bin/make -f scripts/kconfig/Makefile silentoldconfig
    解释:进入scripts/kconfig/Makefile执行make silentoldconfig
    此命令执行的是这样一句话:

    conf --silentoldconfig Kconfig
    他会检查,配置选项中是不是有 (new) 项,如果没有,便会在 include/ 目录下两个文件 conf、generated。如果有,可能会编译错误,因此,这里一定要注意配置中不能有新的配置项。
    include/
    ├── config
    │ ├── auto.conf
    │ ├── auto.conf.cmd
    │ ├── gen
    │ │ └── choice1.h
    │ ├── ledon.h
    │ ├── num
    │ │ ├── param2.h
    │ │ └── param.h
    │ ├── string
    │ │ └── param.h
    │ ├── tristate
    │ │ └── param.h
    │ └── tristate.conf
    └── generated
    └── autoconf.h

    其中的 generated/autoconf.h 便是我们用图形界面配置的宏了,在普通工程中使用,只需要在文件的头部inlcude进 autoconf.h 即可。

  • 相关阅读:
    彻底解决IE6下Asp.net Ajax客户端框架未能加载
    mootools【二】 Array篇
    SQL Server存储过程编写和优化措施
    Calendar ——漂亮的MooTools 日历插件
    免费使用和 Ajax & Javascript 操纵和显示图片的代码
    26步获得网站流量
    SEO中的十个“没必要”
    如何选择关键字
    建设一个成功的网站
    jQuery 编辑器(转载)
  • 原文地址:https://www.cnblogs.com/Ocean-Star/p/9235812.html
Copyright © 2020-2023  润新知