Last Update: "2014/01/30 12:19:30 makoto"
H8/300 Cross
Hitachi の
8 bit Micro Computer に
H8
がある。
といっても、今は製造しているとすると、
ルネサステクノロジー
ルネサス エレクトロニクス
かも知れない。
このマイクロコンピュータのプログラムを Cygwin 上でコンパイルする
時に必要となる gcc と binutils を準備する方法を調べて見る。
- gcc
- GNU Compiler Collection, コンパイラ の集まり。C C++ Fortran Java 等がある。
今回はこの中の C だけを使います。C で書いたプログラムを
CPU で実行出来る形に翻訳 (compile) します。
- binutils
-
実は上記 gcc は C をアセンブリ言語に翻訳する。
そのアセンブリ言語で書かれたものを機械語にするのがアセンブラ。
そのアセンブラと、関係するいくつかの道具を含んでいるのが binutils。
その中でも、特にリンカ (ld) は、複数のコンパイル済の機械語を、実行出来る形式に
つなぐ働きをするので大変重要。単一の時にも使う
ただ、実際には gcc を起動すると、中で自動的にアセンブラ (gas)を起動するので、
普通は、意識しなくても使える
パッケージ
Cygwin には限らないが、このような道具を用意する時に、手作りのように、
一つ一つ自分で構築
している方法 (野良ビルドと呼ぶ人もいる)と、既製のパッケージ
システムを使う方法があります。
どちらが簡単かは、何で慣れているかにもよるので一慨には言えません。
とりあえず NetBSD 由来の
pkgsrc
の方法を先に試すことにします。そのためには pkgsrc のための準備が必要です。
それを、
bootstrap の説明 に用意しました。
binary
(上記 bootstrap は完了しているとして)
pkgsrc を利用して設置する方法には、実は何通りかあります
- pkg_add
- 既に出来ているものがあるので(ある時には)、加える (pkg_add) だけです
一例として、
加える binary package が置いてある位置 (PATH) を環境変数の PKG_PATH に設定した上で
(特権の窓で) .. (次の一部に以前記述誤りがありましたので
赤で示した訂正があります。申訳けありません)
します。今回は package_name に cross-h8300-elf-gcc と指定します。
自分の機械に何が入っているかは pkg_info で確認出来ます。
もし pkg_add not found のようなことを言われたら PATH に /usr/pkg/sbin
が入っているか確認して下さい。/usr/pkg/sbin/pkg_add が本当にない時には
bootstrap の説明に戻って下さい。
- pkgin
- 上記 pkg_add よりももう少し 賢い方法です
pkgin だけは、上の pkg_add で加えておいて、その後に pkgin help とやったりします
- pkgsrc
- 文字通り src から自分で作ります。
これは次の項目に説明します。
(そんな説明をされても) 初めてだと、「何が何だか分らない」かも知れません。
-
実際にはこれら pkg_add, pkgin, pkgsrc は混ぜて使えます
-
自分が必要とする package を追加するのに、
- (もし binary package が用意してあれば)
pkg_add で済みます。
-
もし (誰も) binary package が用意していないなら、自分で pkgsrc
から make package-install で追加します
- ただし cygwin(64) では「用意してあることは少ない」です。
ここの文脈で言えば、用意してあるのは h8300-elf-gcc と、
それに必要なものだけです。
pkgsrc
(ここの部分は 上記 binary の項目の中の pkg_add を使った時には不要です)
別の画面の bootstrap と、関連して
特権作業 を見て、前者の bootstrap の方はその通り作業をします。
その上で、(簡便法として) Cygwin terminal を右クリックで「管理者として実行」を選んで、
特権の窓を開けて、その中で、
もし PATH の設定がまだなら PATH を設定してから、
# export PATH=/usr/pkg/bin:/usr/pkg/sbin:${PATH}
次のように入力します。
# cd /usr/pkgsrc/cross/h8300-elf-gcc34 ;
bmake package
実は、この方法は、手元で確認したところ、(少なくとも Win7 Pro SP1 (64bit) では)
最後に小さな問題があるかも知れません。32bit では不要らしいです。
二つの OS で違いが出たのは、64 bit 側は Cygin 設置を最少にしている。
32 bit 側はいろいろ多く、としているので thread library の有無に変化があるのかも知れない。
これは調査中です。次の変更をすると通過出来るかと思います。
|