环境
系统:Ubuntu 16.04
内核:Linux 2.6.35.7
配置和编译
1.修改Makefile
(1)修改交叉编译工具链
CROSS_COMPILE ?= /home/linuxwei/toolchain/arm-2009q3/bin/arm-none-linux-gnueabi-
(2)修改架构
ARCH ?= arm
2.配置
第一步:执行make x210ii_qt_defconfig
第二步:执行make menuconfig
注:执行两步配置是为了得到.config文件
3.编译
执行make
注1:清空用make distclean。
注2:编译完成后生成的内核镜像不在源码树的根目录下,在arch/arm/boot目录下,得到的镜像名是zImage。
问题记录
1.在make menuconfig时报
*** Unable to find the ncurses libraries or the
*** required header files.
*** 'make menuconfig' requires the ncurses libraries.
***
*** Install ncurses (ncurses-devel) and try again.
***
这个错误。
解决:sudo apt-get install ncurses-dev
原因:没有安装ncurses库
2.在make时报
Can't use 'defined(@array)' (Maybe you should just omit the defined()?) at kernel/timeconst.pl line 373.
错误
解决:将kernel/timeconst.pl目录下的第373行
if (!defined(@val)) {
去掉defined(),改为
if (!@val) {
后,重新编译成功。
原因:查了一下更新,发现其中有一项是perl版本升级到了 v5.22.1,然后查了perl官方文档,发现官网因为一个bug,该版本将defined(@array)去掉了。可以直接使用数组判断非空。