linux移植手记:交叉工具链编译

    一直做的是应用项目,不知道怎么的,突然想把整个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
 配置 
 ----不能在源码解压的目录下直接编译,可以在其目录下新建一个文件夹

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwwsdd.html