Interface 6月号付録の SH-2 基板を、Linux 上でプログラミングし、リアルタイム OS (HOS)を使い、更に rom 化して、SH-2 内蔵の rom に書き込む方法について述べる。
今回は、第一回目として、Linux 上でのクロスコンパイラ構築方法について述べる。
私の Linux は、Debian Linux 3.1 Sarge であるが、大概の Linux なら同様の方法で、クロスコンパイラが構築できると思う。また、私の Linux 環境にはセルフコンパイル用の gcc 等のインストールは既に済んでいる。もし、セルフ用 gcc 等のインストールが済んでいない人は、そこから行ってほしい。
まず、必要なソースファイルのダウンロードを行う。
上記のリンク先から、下記のファイルをダウンロードする。
・binutils-2.17.tar.gz
・gcc-3.4.6.tar.gz
・newlib-1.14.0.tar.gz
なお、私のダウンロードしたバージョンは、その時点での最新のソースファイルをダウンロードしただけである。(gcc は、3.4 系列での最新)
ダウンロードしたファイルは、「~/src/」ディレクトリに入れておく。
以下のコマンドを実行する。なお、文頭が「$」はユーザーモードで、「#」はrootモードで実行すること。
解凍
$ cd ~/src/
$ tar zxvf binutils-2.17.tar.gz
$ tar zxvf gcc-3.4.6.tar.gz
$ tar zxvf newlib-1.14.0.tar.gz
binutils の構築
# mkdir /usr/cross
$ cd ~/src/binutils-2.17
$ ./configure -target=sh-elf -prefix=/usr/cross -disable-nls
$ make
# make install
~/.bashrc を編集し
PATH=/usr/cross/bin:$PATH ; export PATHを追加し、一度ターミナルを終了するか、ログアウトして、PATHを反映しておく。
gcc の構築
$ cd ~/src/gcc-3.4.6
$ ln -s ../newlib-1.14.0/newlib .
$ mkdir dist;cd dist
$ ../configure -target=sh-elf -prefix=/usr/cross -with-gnu-as
-with-gnu-ld -with-newlib
-with-headers=~/src/newlib-1.14.0/newlib/libc/include
--enable-languages="c,c++"
$ make
# PATH=/usr/cross/bin:$PATH ; export PATH
# make install
なお、上記の「../configure」は、本来、一行で入力するのだが、表示上複数行に分けて居るので、注意して欲しい。
これで、クロスコンパイラの構築は終了である。
なお、gcc の make などは、意外と時間がかかるので、のんびりできるときに行った方が良い。
注意
ブログのコンテンツの内、「告知」など時期よって情報価値が無くなるのは除いてある。また、コンテンツに付いたコメントは書き込み者に著作権があるものと判断し、ここに持ってきていないので、コメントを見るときは、元々のブログコンテンツを参照してもらいたい。
その他、ブログ発表後、コメントなどの内容を反映するなど、内容を変更しているものもあるので、注意してほしい。