Top > sh_cross_compiler

広告

準備

DebianとUbuntu向けに書いてあります。

GCC,binutiles,newlibなどのソースをダウンロードしてくる

それぞれなるべく新しいものを取ってくる。ただし、PCで使っているバージョンと合っている方が、同じライブラリを使えて便利だと思う。

ディストリビューションのソースパッケージをインストールしても良いかも。

GCCのビルドに必要なライブラリを取ってくる

大体はLinuxをインストールしたときにgcc(ソースではない)などと一緒にインストールされていると思うけど、足りないものがある。
GMPとMPFR、MPCを入れるのだけれど、libgmpなどは多分すでにインストール済み。
じゃあ何を入れるのかとなると、開発向けパッケージを入れる必要がある。つまり

  • libgmp-dev
  • libmpfr-dev
  • libmpc-dev

「libmpc-dev」は他の2つのパッケージに依存するので、「libmpc-dev」をインストールすれば3つともインストールされる。

だいたい何かをコンパイルするなんてときは開発向けパッケージ(xxx-devみたいの)を入れておけばよい。

コンパイル

先人たちに導かれるまま、まずはbinutilsのコンパイル
それぞれのファイルのバージョンはダウンロードしたものに合わせる。
ディレクトリやファイル名などは適宜訂正してください。

$ tar jxvf binutils-x.xx.tar.bz2
$ mkdir binutils_tmp
$ cd binutils_tmp
$ ../binutils-x.xx/configure --prefix=/usr/local/sh_cross_4.7 --target=sh-renesas-elf
$ make
$ su
# make install

シンボリックリンクを作って使いやすくしておく

# cd /usr/local
# ln -s sh_cross_4.7 sh_cross 

次にgccのコンパイル

$ tar zxvf gcc-core-x.xx.x.tar.gz
$ tar zxvf newlib-x.xx.x.tar.gz
$ mkdir gcc-x.xx.x_tmp
$ cd gcc-x.xx.x_tmp
$ su
# export PATH=$PATH:/usr/local/sh_cross/bin
# ../gcc-4.7.0/configure --prefix=/usr/local/sh_cross_4.7 --target=sh-renesas-elf --with-newlib --with-headers=../newlib-1.20.0/newlib/libc/include/ --enable-languages=c,c++

makeに時間が掛かるので、マルチプロセッサでコンパイルする。「-j 12」の12はコア数x2 (Hyper threddingの場合)

# make -j 12
# make install

最後にnewlibをコンパイル

$ mkdir newlib_tmp
$ cd newlib_tmp
$ export PATH=$PATH:/usr/local/sh_cross/bin
$ ../newlib-1.20.0/configure --prefix=/usr/local/sh_cross_4.7 --target=sh-renesas-elf
$ make

結構時間が掛かるので

$ make -j 12

とすると多少速くなる

$ su
# make install

で、クロスコンパイラは出来上がり。

それぞれのCPUのヘッダーファイルが必要なのでルネサスのWebサイトから取ってくる。登録が必要
なかなか見つけにくいが「SuperHファミリ用I/Oレジスタ定義ファイル」で検索すると良いかも。
現時点では「ここ」。登録が必要

プログラムをコンパイル

(別室)SH-2(SH7125F/SH7144F)で遊ぼう で配布してくれている、GCC用のサンプルプログラムファイルをもらってくる。 圧縮ファイルには、

  • Makefile
  • main.c
  • startup1.s
  • memory.def が入っている。「memory.de」と「startup1.s」は流用可能みたい。

Makefileの中身を自分の環境に合わせて変更すれば、とりあえず

make

でMOTファイルが出来上がる。

他の方法でプログラムをコンパイル

$ /usr/local/sh_cross/bin/sh-renesas-elf-gcc -m2 hoge.c

でコンパイルできる。「-m2」はSH2ファミリーのとき

export PATH=$PATH:/usr/local/sh_cross/bin

この行を./.bashrcに書いておくなりして、パスを通しておけば

$ sh-renesas-elf-gcc -m2 hoge.c

でよい。

ところが、これでできるのはバイナリファイルなので実際に書き込むときに必要なMOTファイルにする必要がある。

MOTファイルにする

とりあえず以下のサイトを参照してMOTファイルに変換する


広告

リロード   差分   ホーム 一覧 検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS
Last-modified: Thu, 07 Feb 2013 11:13:01 JST (4111d)