This page describes how to setup a cross compiler on a linux x86 host tailored for the Raspberry Pi cpu's. The follow libc and libgcc libraries are available : pi@xubuntu:/opt/gnuarm-hardfp$ arm-none-eabi-gcc -print-multi-lib Install the gcc compiler with extras.; armv8-a/cortex-a53/hardfp/fp-armv8;@march=armv8-a@mtune=cortex-a53@mfloat-abi=hard@mfpu=fp-armv8 armv8-a/cortex-a53/hardfp/neon-fp-armv8;@march=armv8-a@mtune=cortex-a53@mfloat-abi=hard@mfpu=neon-fp-armv8 armv7-a/cortex-a7/hardfp/vfpv4;@march=armv7-a@mtune=cortex-a7@mfloat-abi=hard@mfpu=vfpv4 armv7-a/cortex-a7/hardfp/neon-vfpv4;@march=armv7-a@mtune=cortex-a7@mfloat-abi=hard@mfpu=neon-vfpv4 armv6zk/arm1176jzf-s/hardfp/vfp;@march=armv6zk@mtune=arm1176jzf-s@mfloat-abi=hard@mfpu=vfp pi@xubuntu:/opt/gnuarm-hardfp$ find $PREFIX -name libc.a | sort ./arm-none-eabi/lib/armv6zk/arm1176jzf-s/hardfp/vfp/libc.a ./arm-none-eabi/lib/armv7-a/cortex-a7/hardfp/neon-vfpv4/libc.a ./arm-none-eabi/lib/armv7-a/cortex-a7/hardfp/vfpv4/libc.a ./arm-none-eabi/lib/armv8-a/cortex-a53/hardfp/fp-armv8/libc.a ./arm-none-eabi/lib/armv8-a/cortex-a53/hardfp/neon-fp-armv8/libc.a ./arm-none-eabi/lib/libc.a pi@xubuntu:/opt/gnuarm-hardfp$ find $PREFIX -name libgcc.a | sort ./lib/gcc/arm-none-eabi/4.9.3/armv6zk/arm1176jzf-s/hardfp/vfp/libgcc.a ./lib/gcc/arm-none-eabi/4.9.3/armv7-a/cortex-a7/hardfp/neon-vfpv4/libgcc.a ./lib/gcc/arm-none-eabi/4.9.3/armv7-a/cortex-a7/hardfp/vfpv4/libgcc.a ./lib/gcc/arm-none-eabi/4.9.3/armv8-a/cortex-a53/hardfp/fp-armv8/libgcc.a ./lib/gcc/arm-none-eabi/4.9.3/armv8-a/cortex-a53/hardfp/neon-fp-armv8/libgcc.a ./lib/gcc/arm-none-eabi/4.9.3/libgcc.a sudo -i apt-get update && apt-get upgrade apt-get install gcc g++ make bison byacc flex gnat gawk perl zlibc Create the target directory for the cross compiler. mkdir /opt/gnuarm-hardfp chown -R pi:pi /opt/gnuarm-hardfp exit export TARGET=arm-none-eabi export PREFIX=/opt/gnuarm-hardfp export PATH=$PATH:$PREFIX/bin BINUTILS=binutils-2.25 GCC=gcc-4.9.3 NEWLIB=newlib-2.2.0 Get the archives cd /opt/gnuarm-hardfp wget http://ftp.gnu.org/gnu/binutils/$BINUTILS.tar.bz2 wget http://ftp.gnu.org/gnu/gcc/$GCC/$GCC.tar.bz2 wget ftp://sourceware.org/pub/newlib/$NEWLIB.tar.gz Extract the archives tar xvf $BINUTILS.tar.bz2 tar xvf $GCC.tar.bz2 tar xzvf $NEWLIB.tar.gz Remove the archives rm -rf $BINUTILS.tar.bz2 $GCC.tar.bz2 $NEWLIB.tar.gz Download the gcc prerequisites cd /opt/gnuarm-hardfp/$GCC ./contrib/download_prerequisites cd - Make sure that all configure files have execute rights find /opt/gnuarm-hardfp/$GCC -name configure | xargs chmod a+x Copy the multilib config file cp t-arm-elf $GCC/gcc/config/arm/ Build the binutils mkdir build-binutils cd build-binutils ../$BINUTILS/configure --target=$TARGET --prefix=$PREFIX make -j 4 all make install Build the GCC minimum configuration mkdir ../build-gcc cd ../build-gcc ../$GCC/configure --target=$TARGET --prefix=$PREFIX --without-headers --with-newlib --enable-languages="c,c++" --with-gcc --with-gnu-ld --with-gnu-as --with-dwarf2 --with-mode=arm --with-float=hard make -j 4 all-gcc make install-gcc Build the newlib mkdir ../build-newlib cd ../build-newlib ../$NEWLIB/configure --target=$TARGET --prefix=$PREFIX --disable-newlib-supplied-syscalls make -j 4 make install Build GCC again with newlib cd ../build-gcc ../$GCC/configure --target=$TARGET --prefix=$PREFIX --without-headers --with-newlib --enable-languages="c,c++" --with-gcc --with-gnu-ld --with-gnu-as --with-dwarf2 --with-mode=arm --with-float=hard make -j 4 all make install Build the gcc libraries make -j 4 all-target-libgcc CFLAGS_FOR_TARGET="-g -O3" make install-target-libgcc Display the build results and remove the build directories arm-none-eabi-gcc -print-multi-lib cd $PREFIX rm -rf build-* find -name libc.a | sort find -name libgcc.a | sort Add the bin path to the pi profile vi ~pi/.profile export PATH=/opt/gnuarm-hardfp/bin:$PATH |
|Archive| > Raspberry Pi >