linux .config 生成过程

       linux 中 make 命令执行的时候会递归搜索所有被include的文件,如果有目标则执行该目标,如果没有目标则执行默认的目标

       我们在make defconfig,make menuconfig,make xconfig .... 的时候,这些目标在/scripts/kconfig/Makefile中定义,现在简单了解下以下两个命令产生的结果如何:

                      export ARCH=arm

                      make defconfig

       前一条指令导入一个系统变量,为后一条指令使用

       make defconfig 首先生成两个文件,分别位于/scripts/basic/fixdep (不清楚用处) , 和/scripts/kconfig/conf .而conf则是生成.config的程序

       若我们执行 make defconfig,会看到有 "versatile_defconfig“ 字样输出,说明我们生成的.config文件是依赖于该文件的,我们可以手动复现这一过程:

          将scripts/kconfig/conf 复制到源码根目录

         执行:  ./conf --defconfig=arch/arm/configs/versatile_defconfig arch/arm/Kconfig

                   则会在当前根目录下生成.config配置文件,与 第一步生成的.config 文件做比较,除了kernel version没有赋值(KERNELVERSION)之外,其余的都一致

        

          初步推测,若 versatile_defconfig中指定某个变量为y,那么生成的.config文件中就会引入,否则会根据Kconfig中包含的所有Kconfig的默认值来生成每个宏的值

          在 arch/ARCH/Kconfig 会包括诸多的Kconfig文件,包括的每个文件中,某些select 后面的配置变量会根据包含该select的条件来生成宏的值

          下一步,分析conf源码......

你可能感兴趣的:(杂项相关)