分类: 嵌入式
2012-02-11 17:32:03
环境准备:
vmware+ubuntu 8.04 desktop
在终端登陆到su (超级用户)
apt-get install build-essential
apt-get install libncurses5-dev
文件准备:
arm-linux-gcc-4.3.2.tgz (google)
linux-2.6.39.4.tar.gz ()
注意事项:
1. 这中间要注意,gcc编译器的版本很重要,不要太低。(之前用arm-linux-gcc3.2 失败)
2. 单独建立个目录来编译,不要使用source目录。
3. 如果中途编译出现错误,建议重新来过,或者执行好 make mrproper
4. 使用超级用户执行命令
1. 安装交叉编译工具链 (codesourcery)
1.1复制arm-linux-gcc-4.3.2.tgz 到ubuntu
sudo tar –xzvf arm-linux-gcc-4.3.2.tgz –C /
这样在 /usr/local/arm/4.3.2/bin 下就会有arm-linux-gcc 编译器了
1.2 添加路径到path
sudo vi /etc/bash.bashrc
在后面加入如下代码:
if [ -d /usr/local/arm ] ; then
PATH=/usr/local/arm/4.3.2/bin:"${PATH}"
fi
1.3 执行 source /etc/profile 使生效
1.4 输入 arm-linux-gcc –v 来检测是否安装好了arm-linux-gcc
2. 解压 linux-2.6.39.4.tar.gz
2.1 复制 linux-2.6.39.4.tar.gz 到 /usr/local/linuxkernel 目录
2.2 cd /usr/local/linuxkernel
tar –xzvf linux-2.6.39.4.tar.gz
2.3 mkdir build (/usr/local/linuxkernel/build)
2.4 复制源代码目录下的 arch/arm/configs 下的对应 XXXX_defconfig到/usr/local/linuxkernel/linux-2.6.39.4/ 目录,并重命名为.config
cd /usr/local/linuxkernel/linux-2.6.39.4
cp -f /usr/local/linuxkernel/linux-2.6.39.4/arch/arm/configs/XXXX_defconfig .config
(XXXX_defconfig 表示对应平台的配置 例如 s3c2410_defconfig)
3. 修改Makefile (这部分可以省略,通过后面传参数来操作)
ARCH ?= arm
CROSS_COMPILE ?= arm-linux-
4. apt-get install libncurses5-dev 解决make menuconfig 错误问题 (如果没有安装的话)
5. make O=/usr/local/linuxkernel/build ARCH=arm CROSS_COMPILE=arm-linux- menuconfig
O=/usr/local/linuxkernel/build 指定创建使用的目录
ARCH=arm 指定target
CROSS_COMPILE=arm-linux- 指定使用的编译器 会自动补上gcc
这样会在 /usr/local/linuxkernel/build 下生成.config文件
注意选择save configure 保存。
(配置的时候
有可能需要去掉EABI Kernel Features ---> [*] Use the ARM EABI
防止后面编译,该版本不需要去掉。)
6. 编译内核
6.1 make mrproper 清除source目录下的.config(我们使用usr/local/linuxkernel/build 目录的.config)
6.2 make O=/usr/local/linuxkernel/build ARCH=arm CROSS_COMPILE=arm-linux- zImage
这样没有出错的话在 /usr/local/linuxkernel/build/arch/arm/boot 下就有编译好的内核了.