Top > sh_cross_compiler

広告
  • 追加された行はこの色です。
  • 削除された行はこの色です。
  • sh_cross_compiler へ行く。

*準備 [#f6fb5ee3]
DebianとUbuntu向けに書いてあります。
**GCC,binutiles,newlibなどのソースをダウンロードしてくる [#f2189426]
それぞれなるべく新しいものを取ってくる。ただし、PCで使っているバージョンと合っている方が、同じライブラリを使えて便利だと思う。
-binutils
--ftp://ftp.gnu.org/gnu/binutils/
-gcc
--ftp://ftp.gnu.org/gnu/gcc/
-newlib
--http://sources.redhat.com/newlib/

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

**GCCのビルドに必要なライブラリを取ってくる [#vf7f541c]
大体はLinuxをインストールしたときにgcc(ソースではない)などと一緒にインストールされていると思うけど、足りないものがある。~
GMPとMPFR、MPCを入れるのだけれど、libgmpなどは多分すでにインストール済み。~
じゃあ何を入れるのかとなると、開発向けパッケージを入れる必要がある。つまり
-libgmp-dev
-libmpfr-dev
-libmpc-dev

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

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

**コンパイル [#fde5ece4]
[[先人:http://hyakuren-soft.sakura.ne.jp/dame_rbo_html/superh_cross_page.html]]たちに導かれるまま、まずはbinutilsのコンパイル~
それぞれのファイルのバージョンはダウンロードしたものに合わせる。~
&color(Red){ディレクトリやファイル名などは適宜訂正してください。};
 $ 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サイト:http://japan.renesas.com/]]から取ってくる。登録が必要~
なかなか見つけにくいが「SuperHファミリ用I/Oレジスタ定義ファイル」で検索すると良いかも。~
現時点では「[[ここ:http://japan.renesas.com/support/downloads/download_results/C2001401-C2001500/sample_codes_sh_io_register.jsp]]」。&color(Red){登録が必要};

**プログラムをコンパイル [#o8c42cac]
[[(別室)SH-2(SH7125F/SH7144F)で遊ぼう :http://homepage3.nifty.com/ARTWEB/sh2.htm]]で配布してくれている、GCC用のサンプルプログラムファイルをもらってくる。
圧縮ファイルには、
-Makefile
-main.c
-startup1.s
-memory.def
が入っている。「memory.de」と「startup1.s」は流用可能みたい。

Makefileの中身を自分の環境に合わせて変更すれば、とりあえず
 make
でMOTファイルが出来上がる。


**他の方法でプログラムをコンパイル [#m44a7a7f]
 $ /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ファイルにする [#afd786d5]
とりあえず以下のサイトを参照してMOTファイルに変換する
-[[使ってみよう、linux! GDB-H8 simulator編(おまけ、SH):http://www2.plala.or.jp/taxmanmt/gdbSH.html]]
-http://www.geocities.jp/chako_ratta/micon/h8gcc_install.html
-[[H8用コンパイラ GCC(Cygwin):http://www.geocities.jp/chako_ratta/micon/h8gcc_install.html]]

広告

リロード   差分   ホーム 一覧 検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS