ubuntu12.04LTS-ARM平台交叉编译器的制作

主机环境
      Ubuntu 12.04.2 LTS(cat /etc/lsb-release)
      gcc>
  • Download source code
    1. binutils-2.22.tar.gz
    2. gcc-4.7.2.tar.bz2 
    3. gmp-5.0.5.tar.xz 
    4. mpfr-3.1.1.tar.xz 
    5. mpc-1.0.1.tar.gz 
    6. glibc-2.16.0.tar.xz 
    7. glibc-linuxthreads-2.5.tar.bz2 
    8. glibc-ports-2.16.0.tar.xz 
    9. linux-3.5.4.tar.bz2 
  • 将以上源码放入arm-tool目录(或其它自建目录)
  • 编译环境变量配置
    1. vim armenv,写入以下内容
      1. TARGET=arm-linux-gnueabi
      2. PREFIX=/opt/cross/gcc-4.7.2/$TARGET
      3. PATH=$PREFIX/bin:$PATH
      4. LD_LIBRARY_PATH=/opt/gmp-5.0.5/lib:/opt/mpfr-3.1.1/lib:/opt/mpc-1.0.1/lib
      5. export TARGET PREFIX PATH LD_LIBRARY_PATH
    2. source armenv使之生效
  •  Instll binutils
    1. tar -xzf binutils-2.22.tar.gz 
    2. mkdir binutils-build 
    3. cd binutils-build 
    4. ../binutils-2.22/configure --target=$TARGET --prefix=$PREFIX 
    5. make -j2 
    6. make install
    7. cd .. 
  • Install gmp安装在/opt/gmp-5.0.5下
    1. sudo mkdir -p /opt/gmp-5.0.5
    2. tar -jxvf gmp-5.0.5.tar.bz2
    3. cd gmp-5.0.5
    4. ./configure --prefix=/opt/gmp-5.0.5
    5. make && make check && sudo make install
  • Install mpfr安装在/opt/mpfr-3.1.1
    1. mkdir -p /opt/mpfr-3.1.1
    2. tar -jxvf mpfr-3.1.1.tar.bz2
    3. cd  mpfr-3.1.1
    4. ./configure --prefix=/opt/ mpfr-3.1.1 --with-gmp=/opt/gmp-5.0.5
    5. make && make check && sudo make install
  • Install mpc安装在/opt/mpc-1.0.1
    1. mkdir -p /opt/mpc-1.0.1
    2. tar -zxvf mpc-1.0.1 .tar.gz
    3. cd mpc-1.0.1
    4. ./configure --prefix=/opt/ mpc-1.0.1 --with-gmp=/opt/gmp-5.0.5  --with-mpfr=/opt/mpfr-3.1.1
    5. make && make check && sudo make install
  • 第一次编译gcc
    1. mkdir gcc-bootstrap-build
    2. cd  gcc-bootstrap-build
    3. ../gcc-4.7.2/configure --target=$TARGET --host=x86-linux-gnu --build=x86-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-gmp=/opt/gmp-5.0.5 --with-mpfr=/opt/mpfr-3.1.1 --with-mpc=/opt/mpc-1.0.1
    4. make -j2 all-gcc
    5. make -j2 all-target-libgcc
    6. make install-gcc
    7. make install-target-gcc 
    8. cp -v libiberty/libiberty.a $PREFIX/lib 
    9. 以下两个添加 libgcc_eh.a,  ,libgcc_s.a到 libgcc.a的软链接
    10. ln -vs libgcc.a `arm-linux-gnueabi-gcc -print-libgcc-file-name sed 's/libgcc/&_eh/'`
    11. ln -vs libgcc.a `arm-linux-gnueabi-gcc -print-libgcc-file-name sed 's/libgcc/&_s/'` 
    12. cd ..
  • 安装内核头文件
    1. tar -xjf linux-3.5.4.tar.bz2 
    2. cd linux-3.5.4 
    3. make ARCH=arm headers_check
    4. make ARCH=arm INSTALL_HDR_PATH=dest headers_install 
    5. mkdir /opt/cross/gcc-4.7.2/arm-linux-gnueabi/arm-linux-gnueabi/include
    6. sudo cp -rv dest/include/* $PREFIX/$TARGET/include 
    7. cd .. 
  • 编译glibc库
    1. tar -xvf glibc-2.16.0.tar.xz
    2. tar -xvjf glibc-linuxthreads-2.5.tar.bz2 -C glibc-2.16.0  
    3. tar -xvf glibc-ports-2.16.0.tar.xz 
    4. mv glibc-ports-2.16.0 glibc-2.16.0/ports 
    5. mkdir glibc-build 
    6. cd glibc-build
    7. ../glibc-2.16.0/configure CC=$TARGET-gcc AR=$TARGET-ar RANLIB=$TARGET-ranlib --host=$TARGET --prefix=$PREFIX/$TARGET --with-tls --disable-profile --enable-add-ons --with-headers=$PREFIX/$TARGET/include libc_cv_forced_unwind=yes libc_cv_c_cleanup=yes libc_cv_arm_tls=yes
    8. make -j2 
    9. make install 
    10. cd .. 
  • 编译完整的gcc
    1. cd gcc-bootstrap-build
    2. ../gcc-4.7.2/configure --target=$TARGET --host=x86-linux-gnu --build=x86-linux-gnu --prefix=$PREFIX --enable-languages=c,c++ --enable-shared --with-gmp=/opt/gmp-5.0.5 --with-mpfr=/opt/mpfr-3.1.1 --with-mpc=/opt/mpc-1.0.1
    3. make -j2 
    4. make install 
    5. cd ..
  • Issue:
        configure:>
Issue:
       arm-linux-gnueabi/bin/ld:>http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo/src/patchsets/glibc/2.16.0/
      下载0040_all_glibc-2.16-no-libgcc_s.patch文件打补丁
         patch -p1 -d> ubuntu 交叉 编译 环境找不到abi-versions.h
m awk : scripts/gen-sorted. awk : line 19: runaway regular expression /, "", subd ...
make[1]: *** No rule to make target `/home/embedded/build-bools/build-glibc/Versions.all', needed by `/home/embedded/build-bools/build-glibc/abi-versions.h'.  Stop.
make[1]: Leaving directory `/home/embedded/build-bools/glibc-2.14'
make: *** [all] Error 2

Solution:
ubuntu安装时默认安装了mawk,在交叉编译时,mawk会影响你的建立交叉编译环境,所以应该卸载mawk,应该安装gawk,这样就ok了。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值