一直做的是应用项目,不知道怎么的,突然想把整个arm-linux移植流程跑一遍,如今就有了这一记录,希望对初学和有兴趣了解的人做些参考,同时还望行家们手下留情我,并多多指教。闲话少说,进入正题:第一步交叉工具链的制作。
先说明我这里仅是对binutils、gcc、glibc的交叉编译,缺少gdb等以及对整个制作完成的打包整理,可能有些混乱。编译环境是Debian 6.0,使用的头文件内核linux2.6.32,编译是带EABI的,在交叉工具链编译(上)中主要将制作过程一介绍,在下中将说明原因、遇到的些错误及解决方法。
(1)准备工作源码包:
gmp-4.3.2.tar.gz ftp://ftp.gnu.org/gnu/gmp mpfr-3.0.1.tar.gz ftp://ftp.gnu.org/gnu/mpfr glibc-ports-2.11.tar.bz2 ftp://ftp.gnu.org/gnu/glibc binutils-2.18.tar.bz2 ftp://ftp.gnu.org/gnu/binutils gcc-4.4.5.tar.gz ftp://ftp.gnu.org/gnu/gcc glibc-2.11.1.tar.bz2 ftp://ftp.gnu.org/gnu/gcc
linux-2.6.32.tar.bz2 ?id=31468&ResourceID=6156
----最近kernel.org上不去,只好从这里下了。
安装一些必备的东西
aptitude install build-essential automake bison flex texinfo gawk g\+\+ aptitude remove mawk apt-get install libncurses*
目录build-tools 存放源码及编译文件夹
--build-binutils binutils
--build-gcc gcc
--build-glibc glibc
--build-required gmp、mpfr、glibc-ports
--build-gcc-final 最后的gcc
kernel linux内核源码,包括下载的没有修改过的和
测试使用的是mini2440提供的内核linux2.6.32.2
tools 安装目录设置环境变量
export TARGET=arm-none-linux-gnueabi export PREFIX=/opt/arm_linux/tools export PATH=$PATH:$PREFIX/bin
安装gmp、mpfr
gmp
tar xvf gmp-4.3.2.tar.gz 在gmp安装目录下 ./configure --prefix=$PREFIX make make check make install mpfr
./configure --prefix=$PREFIX --enable-shared --with-gmp=$PREFIX make make check (2)编译binutils
解压源码包到build-binutils,建立编译文件夹
makdir build ./configure --prefix=$PREFIX --target=$TARGET --disable-nls --disable-multilib --enable-shared make configure-host make make install
(3)生成内核头文件在解压好的目录下
配置
make ARCH=arm COROSS_COMPILE=arm-linux- menuconfig make ARCH=arm COROSS_COMPILE=arm-linux-
----不管错误,只是生成需要的头文件建立include及链接
mkdir -p $PREFIX/include cd $PREFIX/include ln -s /opt/arm_linux/kernel/linux-2.6.32/arch/arm/include/asm asm ln -s /opt/arm_linux/kernel/linux-2.6.32/include/linux linux ln -s /opt/arm_linux/kernel/linux-2.6.32/include/asm-generic asm-generic
(4)初编译gcc配置
----不能在源码解压的目录下直接编译,可以在其目录下新建一个文件夹