0 前言
内核编译方法详见《Linux内核编译》,本文重点介绍其中内核配置部分。
1 下载源码
下载linux-2.6.34.7.tar.bz2并解压:
tar -axvf linux-2.6.34.7.tar.bz2
2 默认配置
进入内核源码顶级目录执行:
make defconfig
输出如下:
HOSTCC scripts/basic/fixdep
HOSTCC scripts/basic/docproc
HOSTCC scripts/basic/hash
HOSTCC scripts/kconfig/conf.o
scripts/kconfig/conf.c: In function ‘conf_sym’:
scripts/kconfig/conf.c:159:6: warning: variable ‘type’ set but not used [-Wunused-but-set-variable]
int type;
^
scripts/kconfig/conf.c: In function ‘conf_choice’:
scripts/kconfig/conf.c:231:6: warning: variable ‘type’ set but not used [-Wunused-but-set-variable]
int type;
^
scripts/kconfig/conf.c:307:9: warning: ignoring return value of ‘fgets’, declared with attribute warn_unused_result [-Wunused-result]
fgets(line, 128, stdin);
^
scripts/kconfig/conf.c: In function ‘conf_askvalue’:
scripts/kconfig/conf.c:105:8: warning: ignoring return value of ‘fgets’, declared with attribute warn_unused_result [-Wunused-result]
fgets(line, 128, stdin);
^
HOSTCC scripts/kconfig/kxgettext.o
SHIPPED scripts/kconfig/zconf.tab.c
SHIPPED scripts/kconfig/lex.zconf.c
SHIPPED scripts/kconfig/zconf.hash.c
HOSTCC scripts/kconfig/zconf.tab.o
HOSTLD scripts/kconfig/conf
*** Default configuration is based on 'i386_defconfig'
#
# configuration written to .config
#
根据上述输出信息倒数第倒数4行可知,默认情况下内核的配置是针对x86架构的,并且根据“arch/x86/configs/i386_defconfig”生成了“.config”(注:通过diff命令对它们进行比较发现两者并不完全相同!)
2.1 默认架构
上述默认配置是针对x86构架的,那么怎么启动ARM构架的默认配置呢?答案是指定顶级Makefile的ARCH变量值,同时指定交叉编译工具链前缀:
ARCH ?= arm
CROSS_COMPILE ?= arm-linux-
这时候再执行make defconfig时,针对的就是ARM架构了:
HOSTCC scripts/basic/fixdep
HOSTCC scripts/basic/docproc
HOSTCC scripts/basic/hash
HOSTCC scripts/kconfig/conf.o
scripts/kconfig/conf.c: In function ‘conf_sym’:
scripts/kconfig/conf.c:159:6: warning: variable ‘type’ set but not used [-Wunused-but-set-variable]
int type;
^
scripts/kconfig/conf.c: In function ‘conf_choice’:
scripts/kconfig/conf.c:231:6: warning: variable ‘type’ set but not used [-Wunused-but-set-variable]
int type;
^
scripts/kconfig/conf.c:307:9: warning: ignoring return value of ‘fgets’, declared with attribute