SuperH クロスコンパイラの構築

クロスコンパイラって何?

コンパイルっていうのは、ソースコードを実行形式に変換する作業です。クロスコンパイルというのは、コンパイルする環境と実行形式を動作させる環境が異なる場合の呼び方です。
例えば、Linux 上で、Linux 用のソースコードをコンパイルするのがコンパイルで(特に区別して、ネイティブコンパイルとも言う)、Linux 上で SuperH 用のソースコードをコンパイルするのを、クロスコンパイルと呼びます。


パッケージの取得

Linux 上で SuperH 用のクロスコンパイルを構築するという前提で手順を説明します。必要なパッケージは、binutils, gcc, newlib です。

例えば、以下のサイトから取得できます。

ftp://ftp.gnu.org/gnu/gcc/
ftp://ftp.gnu.org/gnu/binutils/
http://ftp6.us.freebsd.org/pub/sourceware/newlib/

パッケージのバージョンについては、クロスコンパイル構築用に限り、新しければ良いとは限りません。使えないバージョンもあるようで、大変です。
今回は、binutils-2.13.2.1, gcc-2.95.3, newlib-1.10.0 を用います。


パッケージのコンパイル

基本的に、binutils, gcc, newlib のそれぞれについて、コンパイルとインストールをしていくことになります。

あと、その他の特記事項としては、

となります。以降がコンパイル手順です。


binutils のコンパイル

binutils は、コンパイル時のリンクやファイルの変換などを担当してます。

  % tar jxvf binutils-2.13.2.1.tar.bz2
  % mkdir binutils_tmp
  % cd binutils_tmp
  % ../binutils-2.13.2.1/configure --prefix=/usr/local/sh_cross_2.95.3 --target=sh-hitachi-coff
  % make CFLAGS=-O2
  % su
  # make install


gcc のコンパイル

GCC とは、GNU Compiler Collection の略です。今回は C言語のみを用いるので、gcc-<バージョン>.tar.gz をダウンロードするより、gcc-core-<バージョン>.tar.gz をダウンロードするとよいでしょう。 あと、gcc の configure 時にファイルをインストール先にコピーする関係上、ここでの作業のほとんどは root で行うことになります。

  % tar zxvf gcc-core-2.95.3.tar.gz
  % tar zxvf newlib-1.10.0.tar.gz
  % mkdir gcc-2.95.3_tmp
  % cd gcc-2.95.3_tmp
  # su
  # ../gcc-2.95.3/configure --prefix=/usr/local/sh_cross --target=sh-hitachi-coff --with-newlib --with-headers=../newlib-1.10.0/newlib/libc/include/ --enable-languages=c
  # export PATH=${PATH}:/usr/local/sh_cross_2.95.3/bin
  # make CFLAGS=-O2 CXXFLAGS=-O2
  # make install


newlib のコンパイル

newlib は、ライブラリ関数を提供してくれます。SuperH の種類毎(SH2, SH3, など)に、\ リトルエンディアン、ビッグエンディアン用のライブラリを作るので時間がかかります。
それから、コンパイルを始める前に、/usr/local/cross_2.95.3 についてシンボリックリンクを作り、パスを通しておきましょう。

シンボリックリンクを張る

  % cd /usr/local/
  % su
  # ln -s sh_cross_2.95.3/ sh_cross

パスを通す(csh系の場合)

  % setenv PATH ${PATH}:/usr/local/sh_cross/bin

で、以下がコンパイル手順です。

  % mkdir newlib-1.10.0_tmp
  % cd newlib-1.10.0_tmp
  % ../newlib-1.10.0/configure --prefix=/usr/local/sh_cross_2.95.3 --target=sh-hitachi-coff --norecursion
  % setenv PATH ${PATH}:/usr/local/sh_cross/bin
  % make CFLAGS=-O2 CXXFLAGS=-O2
  % su
  # make install

ここまで無事に到達できたら、クロスコンパイラの構築は終了です。


Generated on Mon Apr 13 22:52:07 2009 by  doxygen 1.5.7.1