buildroot make menuconfig 启动分析

1、buildroot文件夹中执行 make menuconfig

2、make命令默认执行 Makefile文件,然后在文件中查找 menuconfig项,如下图:

buildroot make menuconfig 启动分析_第1张图片

其中,  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 make menuconfig 启动分析_第2张图片

buildroot文件夹中 Config.in文件中

1)

  对应上图 Buildroot 2017.02 Configuration

2)由于文件arch/Config.in的导入,增加菜单 Target options, 然后同一级别菜单 Build options,下边是Commands子菜单

buildroot make menuconfig 启动分析_第3张图片

arch/Config.in

buildroot make menuconfig 启动分析_第4张图片

以此类推,buildroot以及其子文件夹下的Config.in文件构成了menuconfig界面的各个菜单项及其选项。

你可能感兴趣的:(嵌入式开发)