最近在编译uboot和kernel,二者的编译都有make *_defconfig的用法,而以前都是make menuconfig然后再make, 对于现在这种用法还不太了解,网上查了下,有人给出 如下解释:
- 如果.config不存在,运行make config/menuconfig时的缺省设置由固化在各个Kconfig文件中各项目的缺省值决定。
- 如果.config存在,运行make config/menuconfig时的缺省设置即是当前.config的设置,若对设置进行了修改,.config将被更新。
- arch/arm/defconfig是一个缺省的配置文件,make defconfig时会根据这个文件生成当前的.config。
- arch/arm/configs文件夹中有许多命名为xxx_defconfig的配置文件,如果运行make xxx_defconfig,当前.config文件会由xxx_defconfig文件生成。
- make oldconfig的作用是备份当前.config文件为.config.old,如若make config/menuconfig设置不当可用于恢复先前的.config。
问题:
1. 拿到一份kernel源码,是不是直接copy合适的config文件到kernel根目录下.config就可以直接make了?
不是,两种方式:
- make *_defconfig->make zImage
- cp arch/arm/configs/*_defconfig .config->make menuconfig->make zImage
因为在make menuconfig或者make *_defconfig过程中,会将结果写入include/linux/autoconf.h, 而autoconf.h会被include/linux/config.h包含,而一些关心内核配置的驱动,可以包含linux/config.h来读取哪些模块被选中使能了