Last Update : 2007/Feb/8
Cross Compiler
on
PS3Linux
目的
準備
インストール
実行方法
今後
謝辞
<<戻る

    昨今の携帯電話やゲーム機などをはじめとした、ちょっと気の利いたデバイスには必ず制御用のCPUとしてARMが使われている。世間に注目されている組込み機器と言うわけだが、これらのデバイスを開発するためにはARMのクロスコンパイラが必要になる。本ページでは ARM のクロスコンパイラの作成方法について述べる。今回は ARM を対象としたが、適宜読み替えることにより他のターゲット(SH)などにも応用できると思われる。


  • 目的

    ARM用のGCCをインストールする


  • 準備

    GCC のインストールに必要なソフトをダウンロードする。 今回は、C/C++のみインストールするため、gobjcや、gcj等は必要ない。

    1. binutils-2.16.1.tar.gz

      2007/2/7時点での最新版であるbinutils 2.16.1を使用する。

    2. gcc.4.1.1.tar.gz

      2007/2/7時点での最新版であるg++ 4.1.1を使用する。

    3. g++ 4.1.1.tar.gz

      2007/2/7時点での最新版であるg++ 4.1.1を使用する。

    4. newlib

      2007/2/7時点での最新版であるnewlib 1.15.0を使用する。


  • インストール

    インストール作業は全て root 権限でおこなう。

    1. binutils

      1. tar xvzf binutils-2.16.1.tar.gz
      2. ./configure --target=arm-elf --prefix=/usr/local/arm
      3. make install

    2. newlibの展開

      gccのメイク時にnewlibのヘッダファイルを使用するので、展開しておく。ここでは、/tmp以下に展開する。 また、gcc/g++のメイクの際に、newlibのヘッダファイルの位置を指定するが、うまく動作しないため /usr/local/arm/includeというシンボリックリンクを作成しておく。

      1. "ftp://sources.redhat.com/pub/newlib/index.html" より、newlibをダウンロードする。
      2. cd /tmp
      3. tar xvzf newlib-1.15.0.tar.gz
      4. cd newlib-1.15.0
      5. ln -s /tmp/newlib-1.15.0/newlib/libc/include /usr/local/arm/include

    3. gcc/g++ 1回目

      PS3Linuxにデフォルトでインストールされているgcc (x86用)では、libsspを有効にしてconfigureを実行すると libsspのリンクチェックの際に、newlibのcrt0.oのリンクに失敗するため まずは、libsspを使用しないARM用のクロスコンパイラを作成する。

      1. "http://gcc.gnu.org" より、gcc/g++をダウンロードして、展開する。 尚、はじめは、libsspを外したコンパイラを作成する。
      2. export PATH=$PATH:/usr/local/arm/bin
      3. cd /tmp
      4. tar xvzf gcc.4.1.1.tar.gz
      5. tar xvzf g++.4.1.1.tar.gz
      6. cd gcc-4.1.1
      7. ./configure --target=arm-elf --prefix=/usr/local/arm/ --enable-languages=c,c++ --with-cpu=arm7tdmi --with-newlib --with-headers=/tmp/newlib-1.15.0/newlib/libc/include/ --disable-ada --disable-libssp
      8. make
      9. make install

    4. newlib 1回目

      メイクしたlibssp無効のコンパイラを使用して、newlibをメイクする。 尚、make installの前に、シンボリックリンクを削除しておく。

      1. cd /tmp
      2. ./configure --target=arm-elf --prefix=/usr/local/arm/ --disable-ada --disable-libssp
      3. make
      4. rm /usr/local/arm/include
      5. make install

    5. gcc/g++ 2回目

      1回目でメイクしたlibssp無効のコンパイラを使用して、libssp有効のコンパイラをメイクする。 尚、make installの前に、1回目にメイクしたコンパイラをアンインストールする。

      1. export PATH=$PATH:/usr/local/arm/bin
      2. mv gcc-4.1.1 gcc-4.1.1-1st
      3. tar xvzf gcc.4.1.1.tar.gz
      4. tar xvzf g++.4.1.1.tar.gz
      5. cd gcc-4.1.1
      6. ./configure --target=arm-elf --prefix=/usr/local/arm/ --enable-languages=c,c++ --with-cpu=arm7tdmi --with-newlib --with-headers=/tmp/newlib-1.15.0/newlib/libc/include/
      7. make
      8. make uninstall
      9. make install

    6. newlib 2回目

      メイクしたlibssp有効のコンパイラを使用して、newlibをメイクする

      1. mv newlib-1.15.0 newlib-1.15.0-1st
      2. tar xvzf newlib-1.15.0.tar.gz
      3. cd newlib-1.15.0
      4. ./configure --target=arm-elf --prefix=/usr/local/arm/
      5. make
      6. make uninstall
      7. make install


  • 実行方法

    1. path の設定

      .bash_profile の最終行に

      export PATH="$PATH:/usr/local/arm/bin"

      付け加える。

    2. 実行

      arm-elf-gcc [Enter]


  • 今後

    1. 実際に使ってみて、使用方法やTIPSなどをレポートする。


  • 謝辞

    インストールに尽力してくれた TeamKNOx の非常勤研究員 T.M.氏に感謝します。


頁の先頭
織田裕一へメール


Copyright (C) 1998 - 2007 TeamKNOx