ARM 用クロスコンパイラのインストール(Ubuntu 上)
前準備
echo "/usr/local/lib" | sudo tee -a /etc/ld.so.conf
sudo /sbin/ldconfig
enable-targets=all で binutils, gcc, g++, gfortran をビルドしインストールする
- 前提ソフトウェア
sudo apt -y update sudo apt -y install gcc-4.6 sudo apt -y install g++-4.6 sudo apt -y install libstdc++6-4.6-dev
- enable-targets=all で binutils をビルドしインストールする
cd /tmp apt-get source binutils sudo apt-get -yV build-dep binutils # cd /tmp if [ ! -f binutils-2.24.tar.gz ]; then curl -O http://ftp.gnu.org/gnu/binutils/binutils-2.24.tar.gz fi sudo rm -rf binutils-2.24 tar -xvzof binutils-2.24.tar.gz sudo chown -R $USER binutils-2.24 # cd /tmp cd binutils-2.24 rm -rf all mkdir all cd all CC=gcc-4.6 \ CXX=g++-4.6 \ ../configure --host=`arch`-pc-linux-gnu --target=`arch`-pc-linux-gnu \ --enable-targets=all --build=`arch`-pc-linux-gnu \ --enable-gnu-as --enable-gnu-ld --enable-multilib --enable-generated-files-in-srcdir --enable-version-specific-runtime-libs \ --disable-werror --enable-libtool --enable-nls --enable-shared \ --with-newlib \ --disable-checking \ --program-prefix=`arch`-pc-linux-gnu- \ --with-sysroot=/ \ --prefix=/usr/local make -j8 sudo make install sudo ldconfig make check
- enable-targets=all で gcc-4.8 をビルドしインストールする
【関連する外部ページ】 https://gcc.gnu.org/install/build.html
*--with-arch-32=i686 を付けるとエラーが出ることがある.
cd /tmp apt-get source gcc-4.6 sudo apt-get -yV build-dep gcc-4.6 # cd /tmp if [ ! -f gcc-4.8.2.tar.gz ]; then curl -O http://www.ring.gr.jp/archives/lang/egcs/releases/gcc-4.8.2/gcc-4.8.2.tar.gz fi sudo rm -rf gcc-4.8.2 tar -xvzof gcc-4.8.2.tar.gz sudo chown -R $USER gcc-4.8.2 # cd /tmp cd gcc-4.8.2 rm -rf all mkdir all cd all CC=gcc-4.6 \ CXX=g++-4.6 \ ../configure --host=`arch`-pc-linux-gnu --target=`arch`-pc-linux-gnu \ --enable-languages=c,c++,fortran --with-binutils-version=2.24 \ --enable-targets=all --build=`arch`-pc-linux-gnu \ --enable-gnu-as --enable-gnu-ld --enable-multilib --enable-generated-files-in-srcdir --enable-version-specific-runtime-libs \ --disable-werror --enable-libtool --enable-nls --enable-shared \ --with-newlib \ --disable-checking \ --program-suffix=-4.8 \ --enable-multiarch --with-tune=generic \ --enable-threads=posix --enable-clocale=gnu \ --enable-gnu-unique-object \ --enable-target-optspace --enable-initfini-array \ --with-gxx-include-dir=/usr/local/include/c++/4.8.2 --enable-libstdcxx-debug --enable-libstdcxx-time=yes \ --with-sysroot=/ \ --prefix=/usr/local make -j8 sudo make install sudo rm -f /usr/local/lib/libiberty.a sudo ldconfig make check
- enable-targets=all で binutils をビルドしインストールする
CC=gcc-4.8, CXX=g++-4.8 に変えて、再度インストールする。
cd /tmp apt-get source binutils sudo apt-get -yV build-dep binutils # cd /tmp if [ ! -f binutils-2.24.tar.gz ]; then curl -O http://ftp.gnu.org/gnu/binutils/binutils-2.24.tar.gz fi sudo rm -rf binutils-2.24 tar -xvzof binutils-2.24.tar.gz sudo chown -R $USER binutils-2.24 # cd /tmp cd binutils-2.24 rm -rf all mkdir all cd all CC=gcc-4.8 \ CXX=g++-4.8 \ ../configure --host=`arch`-pc-linux-gnu --target=`arch`-pc-linux-gnu \ --enable-targets=all --build=`arch`-pc-linux-gnu \ --enable-gnu-as --enable-gnu-ld --enable-multilib --enable-generated-files-in-srcdir --enable-version-specific-runtime-libs \ --disable-werror --enable-libtool --enable-nls --enable-shared \ --with-newlib \ --disable-checking \ --program-prefix=`arch`-pc-linux-gnu- \ --with-sysroot=/ \ --prefix=/usr/local make -j8 sudo make install sudo ldconfig make check
クロスコンパイラ(ターゲット:arm-linux-eabi)
参考にしたWebページ: http://www.kunen.org/uC/gnu_tool.html(現存しない)
参考にしたWebページ: http://lfsbookja.sourceforge.jp/svn.ja/chapter05/binutils-pass1.html(現存しない)
クロスコンパイラで c++ を入れるのは断念(私の能力を超える)2013/12
- arm-linux-eabi をターゲットとする binutils をビルドしインストールする
cd /tmp apt-get source binutils sudo apt-get -yV build-dep binutils # cd /tmp if [ ! -f binutils-2.24.tar.gz ]; then curl -O http://ftp.gnu.org/gnu/binutils/binutils-2.24.tar.gz fi sudo rm -rf binutils-2.24 tar -xvzof binutils-2.24.tar.gz sudo chown -R $USER binutils-2.24 # cd /tmp cd binutils-2.24 rm -rf arm-linux-eabi mkdir arm-linux-eabi cd arm-linux-eabi CC=gcc-4.8 \ CXX=g++-4.8 \ ../configure --host=`arch`-pc-linux-gnu --with-cross-host=`arch`-pc-linux-gnu --target=arm-linux-eabi \ --build=`arch`-pc-linux-gnu \ --enable-gnu-as --enable-gnu-ld --enable-multilib --enable-generated-files-in-srcdir --enable-version-specific-runtime-libs \ --disable-werror --enable-libtool --disable-nls --disable-shared \ --disable-threads --disable-clocale make -j8 sudo make install sudo ldconfig make check
- arm-linux-eabi をターゲットとする gcc-4.8 をビルドしインストールする
ここでは --without-newlib --without-headers と設定する
cd /tmp apt-get source gcc-4.6 sudo apt-get -yV build-dep gcc-4.6 # cd /tmp if [ ! -f gcc-4.8.2.tar.gz ]; then curl -O http://www.ring.gr.jp/archives/lang/egcs/releases/gcc-4.8.2/gcc-4.8.2.tar.gz fi sudo rm -rf gcc-4.8.2 tar -xvzof gcc-4.8.2.tar.gz sudo chown -R $USER gcc-4.8.2 # cd /tmp cd gcc-4.8.2 rm -rf arm-linux-eabi mkdir arm-linux-eabi cd arm-linux-eabi CC=gcc-4.8 \ CXX=g++-4.8 CXXFLAGS="-I/usr/local/include/c++/4.8.2 -I/usr/local/include/c++/4.8.2/`arch`-pc-linux-gnu" \ ../configure --host=`arch`-pc-linux-gnu --with-cross-host=`arch`-pc-linux-gnu --target=arm-linux-eabi \ --enable-languages=c,fortran --disable-lto \ --build=`arch`-pc-linux-gnu \ --enable-gnu-as --enable-gnu-ld --enable-multilib --enable-generated-files-in-srcdir --enable-version-specific-runtime-libs \ --disable-werror --enable-libtool --disable-nls --disable-shared \ --disable-threads --disable-clocale \ --enable-interwork \ --enable-multiarch \ --with-arch=armv7-a --with-float=soft --with-float-abi=softfp --with-fpu=vfp \ --without-newlib --without-headers \ --disable-libstdcxx --disable-hosted-libstdcxx --disable-libstdcxx-threads \ --disable-werror \ --disable-checking \ --disable-ppl-version-check --disable-cloog-version-check \ --disable-libssp --disable-libmudflap --disable-libgomp --disable-sjlj-exceptions --disable-tls --disable-libitm --disable-libatomic \ --disable-bootstrap make -j8 sudo make install sudo ldconfig make check
../configure --host=`arch`-linux-gnu --target=arm-linux-eabi \ --enable-languages=c,fortran --with-binutils-version=2.24 \ --with-sysroot=/ --build=`arch`-linux-gnu \ --enable-gnu-as --enable-gnu-ld --enable-multilib --enable-generated-files-in-srcdir --enable-version-specific-runtime-libs \ --disable-werror --enable-libtool --disable-nls --disable-shared \ --disable-gold --disable-plugin \ --without-newlib --without-headers \ --disable-checking \ --disable-multiarch \ --disable-threads --disable-clocale \ --with-gxx-include-dir=/usr/local/arm-linux-eabi/include/c++/4.8.2 --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object \ --with-arch=armv5te \ --disable-ppl-version-check --disable-cloog-version-check \ --disable-libssp --disable-libmudflap --disable-libgomp --disable-sjlj-exceptions --disable-tls --disable-libitm --with-float=soft --with-fpu=vfp --enable-bootstrap --disable-libquadmath --disable-libquadmath-support --disable-libatomic \ --prefix=/usr/local make -j8 sudo make install sudo ldconfig make check
- arm-linux-eabi をターゲットとする newlib をビルドしインストールする
cd /tmp apt-get source newlib sudo apt-get -yV build-dep newlib # cd /tmp sudo rm -rf newlib-2.0.0 if [ ! -f newlib-2.0.0.tar.gz ]; then curl -O ftp://sourceware.org/pub/newlib/newlib-2.0.0.tar.gz fi tar -xvzof newlib-2.0.0.tar.gz # cd /tmp cd newlib-2.0.0 rm -rf arm-linux-eabi mkdir arm-linux-eabi cd arm-linux-eabi CC=gcc-4.8 \ CXX=g++-4.8 \ ../configure --host=`arch`-pc-linux-gnu --with-cross-host=`arch`-pc-linux-gnu --target=arm-linux-eabi \ --build=`arch`-pc-linux-gnu \ --enable-gnu-as --enable-gnu-ld --enable-multilib --enable-generated-files-in-srcdir --enable-version-specific-runtime-libs \ --disable-werror --enable-libtool --disable-nls --disable-shared \ --disable-threads --disable-clocale \ --enable-interwork \ --enable-interwork \ --enable-multiarch make -j8 sudo make install sudo ldconfig make check
- arm-linux-eabi をターゲットとする gcc-4.8 をビルドしインストールする
今度は --with-newlib --with-headers=/tmp/newlib-2.0.0/newlib/libc/include と設定する.
cd /tmp apt-get source gcc-4.6 sudo apt-get -yV build-dep gcc-4.6 # cd /tmp if [ ! -f gcc-4.8.2.tar.gz ]; then curl -O http://www.ring.gr.jp/archives/lang/egcs/releases/gcc-4.8.2/gcc-4.8.2.tar.gz fi sudo rm -rf gcc-4.8.2 tar -xvzof gcc-4.8.2.tar.gz sudo chown -R $USER gcc-4.8.2 # cd /tmp cd gcc-4.8.2 if [ ! -d /tmp/newlib-2.0.0 ]; then exit fi rm -f newlib ln -s /tmp/newlib-2.0.0/newlib . rm -f libgloss ln -s /tmp/newlib-2.0.0/libgloss . # cd /tmp cd gcc-4.8.2 rm -rf arm-linux-eabi mkdir arm-linux-eabi cd arm-linux-eabi CC=gcc-4.8 \ CXX=g++-4.8 CXXFLAGS="-I/usr/local/include/c++/4.8.2 -I/usr/local/include/c++/4.8.2/`arch`-pc-linux-gnu" \ ../configure --host=`arch`-pc-linux-gnu --with-cross-host=`arch`-pc-linux-gnu --target=arm-linux-eabi \ --enable-languages=c,fortran --disable-lto \ --build=`arch`-pc-linux-gnu \ --enable-gnu-as --enable-gnu-ld --enable-multilib --enable-generated-files-in-srcdir --enable-version-specific-runtime-libs \ --disable-werror --enable-libtool --disable-nls --disable-shared \ --disable-threads --disable-clocale \ --enable-interwork \ --enable-multiarch \ --with-arch=armv7-a --with-float=soft --with-float-abi=softfp --with-fpu=vfp \ --with-newlib --with-headers=/tmp/newlib-2.0.0/newlib/libc/include \ --disable-libstdcxx --disable-hosted-libstdcxx --disable-libstdcxx-threads \ --disable-werror \ --disable-checking \ --disable-ppl-version-check --disable-cloog-version-check \ --disable-libssp --disable-libmudflap --disable-libgomp --disable-sjlj-exceptions --disable-tls --disable-libitm --with-float=soft --with-fpu=vfp --enable-bootstrap --disable-libquadmath --disable-libquadmath-support --disable-libatomic \ --disable-bootstrap make -j8 sudo make install sudo ldconfig make check
- (オプション) arm-linux-eabi をターゲットとする glibc をビルドしインストールする
cd /tmp apt-get source libglib2.0-dev sudo apt-get -yV build-dep libglib2.0-dev # cd /tmp if [ ! -f glibc-2.18.tar.gz ]; then curl -O http://ftp.gnu.org/gnu/glibc/glibc-2.18.tar.gz fi tar -xvzof glibc-2.18.tar.gz sudo chown -R $USER glibc-2.18 # cd /tmp cd glibc-2.18 rm -rf arm-linux-eabi mkdir arm-linux-eabi cd arm-linux-eabi CC=gcc-4.8 \ CXX=g++-4.8 \ ../configure --host=`arch`-pc-linux-gnu --with-cross-host=`arch`-pc-linux-gnu --target=arm-linux-eabi \ --build=`arch`-pc-linux-gnu \ --enable-gnu-as --enable-gnu-ld --enable-multilib --enable-generated-files-in-srcdir --enable-version-specific-runtime-libs \ --disable-werror --enable-libtool --disable-nls --disable-shared \ --disable-threads --disable-clocale \ --disable-static-nss --disable-nss-crypt --without-selinux --disable-nscd\ --prefix=/usr/local/arm-linux-eabi-glibc-2.18 make -j8 sudo make install sudo ldconfig make check