In this document I will describe how to build a toolchain for ARM. == setup build environment == In this document we will install the toolchain in the users home directory under ''$HOME/arm-elf''. Installation will take place in ''/tmp/toolchain''. ''$ mkdir -p /tmp/toolchain/src'' ''$ mkdir -p /tmp/toolchain/arm-elf'' ''$ mkdir -p $HOME/arm-elf/bin'' ''$ export PATH=$HOME/arm-elf/bin:$PATH'' === binutils === Download binutils from [[http://ftp.gnu.org/gnu/binutils/binutils-2.21.1.tar.gz]] ''$ cd /tmp/toolchain/src'' ''$ wget [[http://ftp.gnu.org/gnu/binutils/binutils-2.21.1.tar.gz]]'' ''$ tar -zxvf binutils-2.21.1.tar.gz'' Configure and build. ''$ cd /tmp/toolchain/arm-elf'' ''$ mkdir binutils'' ''$ cd binutils'' ''$ ../../src/binutils-2.21.1/configure --prefix=$HOME/arm-elf --target=arm-elf --disable-nls'' ''$ make'' ''$ make install'' === gcc === checkout trunk version of gcc from svn ''$ cd /tmp/toolchain/src'' ''$ svn co svn checkout [[svn://gcc.gnu.org/svn/gcc/trunk gcc-trunk]]'' configure and build gcc ''$ cd /tmp/toolchain/arm-elf'' ''$ mkdir gcc '' ''$ cd gcc '' ''$ ../../src/gcc-trunk/configure --prefix=$HOME/arm-elf --target=arm-elf --disable-werror --disable-nls --enable-interwork --enable-multilib --enable-languages="c,c++" --enable-target-optspace --with-float=soft --with-newlib --with-headers=/home/alios/src/toolchain/src/newlib/newlib/libc/include/ --with-system-zlib --disable-shared'' ''$ make'' ''$ make install'' === newlib === checkout newlib from cvs ''$ cd /tmp/toolchain/src'' ''$ cvs -z 9 -d :pserver:anoncvs@sources.redhat.com:/cvs/src login ## use 'anoncvs' as password '' ''$ cvs -z 9 -d :pserver:anoncvs@sources.redhat.com:/cvs/src co newlib'' configure and build ''$ cd /tmp/toolchain/arm-elf'' ''$ mkdir newlib '' ''$ cd newlib '' ''$ ../../src/newlib/configure --prefix=$HOME/arm-elf --target=arm-elf --enable-interwork --enable-multilib --enable-target-optspace --with-float=soft'' ''$ make'' ''$ make install''