ARM平台交叉编译器的制作

ARM平台交叉编译器的制作

主机环境:

Ubuntu 12.04.1 64bit 

gcc version 4.6.3 

ubuntu 12.04.1 64bit gcc version 4.6.3
1. 下载最新源码包

binutils-2.22.tar.gz 

 

gcc-4.7.2.tar.bz2 

gmp-5.0.5.tar.xz 

mpfr-3.1.1.tar.xz 

mpc-1.0.1.tar.gz 

 

glibc-2.16.0.tar.xz 

glibc-linuxthreads-2.5.tar.bz2 

glibc-ports-2.16.0.tar.xz 

 

linux-3.5.4.tar.bz2 

binutils-2.22.tar.gz gcc-4.7.2.tar.bz2 gmp-5.0.5.tar.xz mpfr-3.1.1.tar.xz mpc-1.0.1.tar.gz glibc-2.16.0.tar.xz glibc-linuxthreads-2.5.tar.bz2 glibc-ports-2.16.0.tar.xz linux-3.5.4.tar.bz2    将以上源码包放入~/src目录中

1. 配置编译环境

cd ~/src 

vim armenv 

# 将以下内容写入armenv文件中保存退出 

TARGET=arm-linux-gnueabi 

PREFIX=/opt/cross/gcc-4.7.2/$TARGET 

PATH=$PREFIX/bin:$PATH 

 

export TARGET PREFIX PATH 

 

# 配置编译环境 

. armenv 

cd ~/src vim armenv # 将以下内容写入armenv文件中保存退出 TARGET=arm-linux-gnueabi PREFIX=/opt/cross/gcc-4.7.2/$TARGET PATH=$PREFIX/bin:$PATH export TARGET PREFIX PATH # 配置编译环境 . armenv 2. 编译binutils

tar -xzf binutils-2.22.tar.gz 

mkdir binutils-build 

cd binutils-build 

../binutils-2.22/configure --target=$TARGET --prefix=$PREFIX 

make -j2 

sudo make install 

cd .. 

tar -xzf binutils-2.22.tar.gz mkdir binutils-build cd binutils-build ../binutils-2.22/configure --target=$TARGET --prefix=$PREFIX make -j2 sudo make install cd ..

3. 第一次编译gcc

tar -xjf gcc-4.7.2.tar.bz2 

mkdir gcc-bootstrap-build 

tar -xf gmp-5.0.5.tar.xz 

tar -xf mpfr-3.1.1.tar.xz 

tar -xf mpc-1.0.1.tar.gz 

cd gcc-4.7.2 

mv -v gmp-5.0.5 gmp 

mv -v mpfr-3.1.1 mpfr 

mv -v mpc-1.0.1 mpc 

cd ../gcc-bootstrap-build 

 

../gcc-4.7.2/configure \ 

  --target=$TARGET --host=x86_64-linux-gnu --build=x86_64-linux-gnu \ 

  --enable-targets=all --prefix=$PREFIX \ 

  --enable-languages=c --with-newlib --without-headers --disable-nls \ 

  --disable-threads --disable-shared --disable-libmudflap --disable-libssp \ 

  --disable-libgomp --disable-decimal-float --enable-checking=release \ 

  --disable-bootstrap --disable-libquadmath \ 

  --with-mpfr-include=$(pwd)/../gcc-4.7.2/mpfr/src \ 

  --with-mpfr-lib=$(pwd)/mpfr/src/.libs 

make -j2 all-gcc   

make -j2 all-target-libgcc 

sudo make install-gcc 

sudo make install-target-gcc 

sudo cp -v libiberty/libiberty.a $PREFIX/lib 

# 以下添加libgcc_eh.a,libgcc_s.a到libgcc.a的软链接,防止编译C库时出错 

sudo ln -vs libgcc.a `arm-linux-gnueabi-gcc -print-libgcc-file-name | sed 's/libgcc/&_eh/'` 

sudo ln -vs libgcc.a `arm-linux-gnueabi-gcc -print-libgcc-file-name | sed 's/libgcc/&_s/'` 

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

转载注明出处:http://www.heiqu.com/154a96a7eb066de7be8faa6fb26cb759.html