SnowLeopardにH8とSHのクロスコンパイル環境の準備

Mac OSX 10.6 SnowLeopardでSHとH8のためのプログラムをコンパイルするためのGCCをコンパイルしました。

なかなか最初はうまくいきませんでしたが、いくつかオプションを指定することでうまくいきました。

基本的にクロスコンパイル環境はbinutilsをコンパイルし、その後にGCCをnewlibといっしょにコンパイルすることになります。

その前に、GCCのコンパイルにはGMPとMPFR及び、MPCをインストールしておく必要があります。

今回使ったバージョンは以下の通りです。

  • GMP 5.0.1
  • MPFR 2.4.2
  • MPC 0.8.1
  • binutils 2.20
  • newlib 1.18.0
  • gcc 4.5.0

これらが~/src/以下に展開されている状態である場合のコンパイル例が以下の通りです。SHとH8の違いはTargetがsh-elfかh8300-elfかの違いだけです。

また~/.bash_profileに以下の二行を追加しておきます。

export PATH=$PATH:/usr/local/sh/bin
export PATH=$PATH:/usr/local/h8/bin
以下はコンパイルしたときに実行したコマンドです。-disable-werrorを追加しないとコンパイルできませんでした。
これで/usr/local/h8以下と/usr/local/sh以下にそれぞれgcc等がインストールされるはずです。
2010年5月14日追記:newlibのコンパイルが抜けていたのを追加
$ cd ~/src
$ cd ./gmp-5.0.1
$ ./configure
$ make
$ sudo install
$ cd ../mpfr-2.4.2
$ ./configure
$ make
$ sudo install
$ cd ../mpc-0.8.1
$ ./configure
$ make
$ sudo install
$ cd ../gcc-4.5.0
$ ln -s ~/src/newlib-1.18.0/newlib ./
$ cd ../
$ mkdir h8-binutils
$ cd ./h8-binutils
$ ../binutils-2.20/configure –prefix=/usr/local/h8 –program-prefix=h8300-elf- –target=h8300-elf –disable-nls –disable-werror
$ CC=’cc -no-cpp-precomp’ CFLAGS=”-O2 -fomit-frame-pointer” make all
$ sudo make install
$ cd ../
$ mkdir h8-gcc
$ cd ./h8-gcc
$ ../gcc-4.5.0/configure –prefix=/usr/local/h8 –program-prefix=h8300-elf- –target=h8300-elf –with-newlib –enable-languages=c
$ CC=’cc -no-cpp-precomp’ CFLAGS=”-O2 -fomit-frame-pointer” make all
$ sudo make install
$ cd ../
$ mkdir h8-newlib
$ cd ./h8-newlib
$ ../newlib-1.18.0/configure –prefix=/usr/local/h8 –program-prefix=h8300-elf- –target=h8300-elf
$ make
$ sudo make install
$ cd ../
$ mkdir sh-binutils
$ cd ./sh-binutils
$ ../binutils-2.20/configure –prefix=/usr/local/sh –program-prefix=sh-elf- –target=sh-elf –disable-werror
$ CC=’cc -no-cpp-precomp’ CFLAGS=”-O2 -fomit-frame-pointer” make all
$ sudo make install
$ cd ../
$ mkdir sh-gcc
$ cd ./sh-gcc
$ ../gcc-4.5.0/configure –prefix=/usr/local/sh –program-prefix=sh-elf- –target=sh-elf –with-newlib –enable-languages=c
$ CC=’cc -no-cpp-precomp’ CFLAGS=”-O2 -fomit-frame-pointer” make all
$ sudo make install
$ cd ../
$ mkdir sh-newlib
$ cd ./sh-newlib
$ ../newlib-1.18.0/configure –prefix=/usr/local/sh –program-prefix=sh-elf- –target=sh-elf
$ make
$ sudo make install

2 Comments

  1. SpiralRay より:

    Interfaceでも買いました?w
    自分が買ったやつの付録基板、不良品らしく、ドライバがインストールできないorz

    • chibiegg より:

      そういえばInterfaceのおまけもSH2Aやったなぁ。
      一応2冊購入したよ〜

      GCCコンパイルしたのはたまたまAVRとかSTM32とかの開発環境つくってて、いっそのこと全部いれてみようと思ったから。

コメントを残す

メールアドレスが公開されることはありません。

question razz sad evil exclaim smile redface biggrin surprised eek confused cool lol mad twisted rolleyes wink idea arrow neutral cry mrgreen

*