1、buildroot文件夹中执行 make menuconfig
2、make命令默认执行 Makefile文件,然后在文件中查找 menuconfig项,如下图:
其中, menuconfig两个依赖项: mconf 和 prepare-kconfig
prepare-kconfig 依赖于另外两项,展开后发现没有具体执行实际动作,没多大作用。
mconf 展开后如下,生成mconf.o
#mkdir -p /home/frank/est/buildroot/buildroot-2018.02.1/output/build/buildroot-config/lxdialog
#PKG_CONFIG_PATH="" make CC="/usr/bin/gcc" HOSTCC="/usr/bin/gcc" \
obj=/home/frank/test/buildroot/buildroot-2018.02.1/output/build/buildroot-config -C support/kconfig -f Makefile.br mconf
所以,接下来主要执行
$(COMMON_CONFIG_ENV) $< $(CONFIG_CONFIG_IN)
展开后,即
COMMON_CONFIG_ENV = \
BR2_DEFCONFIG='$(call qstrip,$(value BR2_DEFCONFIG))' \
KCONFIG_AUTOCONFIG=$(BUILD_DIR)/buildroot-config/auto.conf \
KCONFIG_AUTOHEADER=$(BUILD_DIR)/buildroot-config/autoconf.h \
KCONFIG_TRISTATE=$(BUILD_DIR)/buildroot-config/tristate.config \
BR2_CONFIG=$(BR2_CONFIG) \
HOST_GCC_VERSION="$(HOSTCC_VERSION)" \
BUILD_DIR=$(BUILD_DIR) \
SKIP_LEGACY=
mconf Config.in
因此, make menuconfig 转变为 mconf Config.in
--------------------------------------------------------------------------------
3、分析 menuconfig界面 与 Config.in 之间的联系
menuconfig主界面
buildroot文件夹中 Config.in文件中
1)
对应上图 Buildroot 2017.02 Configuration
2)由于文件arch/Config.in的导入,增加菜单 Target options, 然后同一级别菜单 Build options,下边是Commands子菜单
arch/Config.in
以此类推,buildroot以及其子文件夹下的Config.in文件构成了menuconfig界面的各个菜单项及其选项。