ARM GCCツールチェーンの作成

5992 ワード

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-j 10、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-a 9の場合、次のように構成されます.
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