建立 ARM GCC 工具链

1. 下载代码如下:

binutils-2.24.tar.bz2  glibc-2.17.tar      linux-3.10.28.tar
gcc-4.8.0.tar.bz2      glibc-2.19.tar.bz2

2. 编译 binutils

把 binutls 代码解压到 src 目录下, 同时在  build 目录下建立 binutil 目录。

在 build/binutils目录下执行:

../../src/binutils-2.24/configure --prefix=/home/charles/code/cross-compile-arm/toolchain --with-sysroot=/home/charles/code/cross-compile-arm/toolchain/arm-linux-gnueabi/sysroot --target=arm-linux-gnueabi

然后,执行 make -j10, make install.

3.安装内核头文件

把内核代码解压到 src 目录下,然后进入到内核代码目录,执行:

make mrproper
make ARCH=arm vexpress_defconfig
make ARCH=arm headers_check
make ARCH=arm INSTALL_HDR_PATH=/home/charles/code/cross-compile-arm/toolchain/arm-linux-gnueabi/sysroot/usr headers_install
 
find ../../toolchain/arm-linux-gnueabi/sysroot/usr/include/ -name ".install" -or -name "..install.cmd" | xargs rm -fv

4. 创建 bootstrap GCC 

建立目录 build/gcc_first,并进入到这个目录,执行:

 ../../src/gcc-4.8.0/configure --build=i686-pc-linux-gnu  --target=arm-linux-gnueabi --prefix=/home/charles/code/cross-compile-arm/toolchain --with-sysroot=/home/charles/code/cross-compile-arm/toolchain/arm-linux-gnueabi/sysroot --with-newlib --without-headers --disable-threads  --enable-__cxa_atexit --disable-libmudflap --disable-libgomp --disable-libssp --disable-nls  --disable-shared  --with-gnu-ld  --with-gnu-as --enable-languages=c --with-float=softfp --with-fpu=vfpv3 --with-cpu=cortex-a15 --with-tune=cortex-a15  --with-gmp=/usr/local --with-mpfr=/usr/local --with-ppl=/usr/local --with-mode=arm
然后,再执行:

make all-gcc install-gcc

make all-target-libgcc install-target-libgcc

5. 编译 GLIBC

先执行:

export PATH=$PATH:/home/charles/code/cross-compile-arm/toolchain/bin

建立目录 build/glibc, 进入这个目录,执行:

 CC=arm-linux-gnueabi-gcc AR=arm-linux-gnueabi-ar  RANLIB=arm-linux-gnueabi-ranlib ../../src/glibc-2.17/configure   --build=i686-pc-linux-gnu  --host=arm-linux-gnueabi --prefix=/usr --with-headers=/home/charles/code/cross-compile-arm/toolchain/arm-linux-gnueabi/sysroot/usr/include  --enable-add-ons --with-mode=arm
然后,执行:

make; make install install_root=/home/charles/code/cross-compile-arm/toolchain/arm-linux-gnueabi/sysroot
6.编译最终的gcc:

建立目录 build/gcc_final, 执行:

../../src/gcc-4.8.0/configure --build=i686-pc-linux-gnu --target=arm-linux-gnueabi --prefix=/home/charles/code/cross-compile-arm/toolchain --with-sysroot=/home/charles/code/cross-compile-arm/toolchain/arm-linux-gnueabi/sysroot --disable-libmudflap --disable-libssp --disable-nls --disable-libstdcxx-pch --with-interwork --with-mode=arm --with-fpu=vfpv3 --with-cpu=cortex-a15 --with-tune=cortex-a15 --with-float=softfp --enable-libgomp --enable-poison-system-directories --enable-symvers=gnu --enable-long-long --enable-threads --enable-languages=c,c++ --enable-shared --enable-lto --enable-__cxa_atexit --with-gnu-as --with-gnu-ld --enable-__cxa_atexit  --with-gmp=/usr/local --with-mpfr=/usr/local --with-ppl=/usr/local
然后,执行:

make all
make install

最后生成的工具链如下:

$ arm-linux-gnueabi-gcc -v
Using built-in specs.
COLLECT_GCC=arm-linux-gnueabi-gcc
COLLECT_LTO_WRAPPER=/home/charles/code/cross-compile-arm/toolchain/libexec/gcc/arm-linux-gnueabi/4.8.0/lto-wrapper
Target: arm-linux-gnueabi
Configured with: ../../src/gcc-4.8.0/configure --build=i686-pc-linux-gnu --target=arm-linux-gnueabi --prefix=/home/charles/code/cross-compile-arm/toolchain --with-sysroot=/home/charles/code/cross-compile-arm/toolchain/arm-linux-gnueabi/sysroot --disable-libmudflap --disable-libssp --disable-nls --disable-libstdcxx-pch --with-interwork --with-mode=arm --with-fpu=vfpv3 --with-cpu=cortex-a15 --with-tune=cortex-a15 --with-float=softfp --enable-libgomp --enable-poison-system-directories --enable-symvers=gnu --enable-long-long --enable-threads --enable-languages=c,c++ --enable-shared --enable-lto --enable-__cxa_atexit --with-gnu-as --with-gnu-ld --enable-__cxa_atexit --with-gmp=/usr/local --with-mpfr=/usr/local --with-ppl=/usr/local
Thread model: posix
gcc version 4.8.0 (GCC) 

============================================

1.如果是为 cortex-a9, 配置如下:


bootstrap gcc:

../../src/gcc-4.8.0/configure --build=i686-pc-linux-gnu  --target=arm-linux-gnueabi --prefix=/home/charles/code/cross-compile-arm/toolchain --with-sysroot=/home/charles/code/cross-compile-arm/toolchain/arm-linux-gnueabi/sysroot --with-newlib --without-headers --disable-threads  --enable-__cxa_atexit --disable-libmudflap --disable-libgomp --disable-libssp --disable-nls  --disable-shared  --with-gnu-ld  --with-gnu-as --enable-languages=c --with-arch=armv7-a --with-float=softfp --with-fpu=vfpv3  --with-tune=cortex-a9  --with-gmp=/usr/local --with-mpfr=/usr/local --with-ppl=/usr/local --with-mode=arm 

full gcc

  ../../src/gcc-4.8.0/configure --build=i686-pc-linux-gnu --target=arm-linux-gnueabi --prefix=/home/charles/code/cross-compile-arm/toolchain --with-sysroot=/home/charles/code/cross-compile-arm/toolchain/arm-linux-gnueabi/sysroot --disable-libmudflap --disable-libssp --disable-nls --disable-libstdcxx-pch --with-interwork --with-arch=armv7-a --with-mode=arm --with-fpu=vfpv3  --with-tune=cortex-a9 --with-float=softfp --enable-libgomp --enable-poison-system-directories --enable-symvers=gnu --enable-long-long --enable-threads --enable-languages=c,c++ --enable-shared --enable-lto --enable-__cxa_atexit --with-gnu-as --with-gnu-ld --enable-__cxa_atexit  --with-gmp=/usr/local --with-mpfr=/usr/local --with-ppl=/usr/local


你可能感兴趣的:(建立 ARM GCC 工具链)