重点:要在内核目录下(linux-3.4)运行make menuconfig,才会出现图形界面,在其他目录下运行无效。
前一篇博客说到的问题,经过补课后才知道,出现这个问题的原因。
1、kernel目录下的Makefile中ARCH赋值方式为:
export KBUILD_BUILDHOST := $(SUBARCH)
ARCH ?= $(SUBARCH)
CROSS_COMPILE ?= $(CONFIG_CROSS_COMPILE:"%"=%)
2、根目录下的Kconfig内容为:
mainmenu "Linux/$ARCH $KERNELVERSION Kernel Configuration"
config SRCARCH
string
option env="SRCARCH"
source "arch/$SRCARCH/Kconfig"
没有指定ARCH前,默认使用的是编译计算机的CPU结构,因为本机编译的PC是X64,所以make menuconfig看到结构为X86_64:
如果指定arch是arm,输入make menuconfig ARCH=arm,(或者在makefile中将ARCH?= $(SUBARCH)改为ARCH ?=arm),不指定CROSS_COMPILE,即认为prefix为空,则默认用gcc编译。如图:
而我们的平台时arm,因此这个x64与mklichee时所赋的配置是不同的,所以才出现重新配置的情况。
如果不单独配置.config,使用对应的配置文件,如sun7i_android的配置,则不会出现问题。因为环境变量配置好之后,会调用相应的配置文件。如图: