上海怡胜
IT技术交流QQ群:378333774
www.ysitroad.net
定制 Linux 内核(linux-3.0.8)
Linux 内核看似佷庞大,其实初学者以及致力于应用开发的用户,不必学习之初就一头钻进浩如烟海的内核代码中问剑;但熟练配置内核的一些常用选项,并编译出来下载到开发板中运行试用,是你迈向 Linux 系统顶峰的必行之路。
一、 平台:
操作系统: ubuntu-14.04
交叉编译器:arm-linux-gcc-4.5.1
配置内核:linux-3.0.8-20130327.tgz
二、 使用缺省配置文件配置和编译内核:
新建编译a8开发板目录
mkdir /root/a8
进入内核树压缩包所在目录,将其解压到设定的目录
tar –zxvf linux-3.0.8-20130327.tgz -C /root/a8
切换到Linux内核目录目录
cd /root/a8/linux-3.0.8
执行以下命令来使用缺省配置文件 mini210_linux_defconfig
# cp mini210_linux_defconfig .config
然后执行“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.
***
make[1]: *** [scripts/kconfig/dochecklxdialog] 错误 1
make: *** [menuconfig] 错误 2
上述错误是说,执行make menuconfig 命令需要安装ncurses-dev
解决方案:
在命令行中输入:
sudo apt-get install libncurses*
正确应该出现配置内核界面
按键盘的向下键,使选择条目移动到加载配置单选项
按回车选择进入,输入默认配置单.config,回车确认,
按下键盘左右键,选择Exit,回车退出,
选择Yes,回车保存退出
最后执行命令:
make zImage
编译最终得到内核的镜像文件zImage(arch/arm/boot目录中)
若提示找不到arm-linux-gcc,有两种情况
(1) 用which命令定位,若没有arm-linux-gcc则修改PATH
export PATH=/opt/FriendlyARM/toolschain/4.5.1/bin:$PATH
(2)which命令定位,若有arm-linux-gcc 则需使用命令apt-get install lsb-core 安装64位兼容包
注:在Ubuntu 64位环境下编译Liunx内核出现 Can't use 'defined(@array)' 错误的解决办法
在编译嵌入式Linux内核时出现了以下错误提示:
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)) {
改为if (!@val) {
后,编译成功。