UNIX系OS上でMINIXのクロス開発環境を構築する方法です。ACKは後回しにして今回はgccだけです。
MINIXはバイナリファイル形式としてa.outを使用しているため、binutilsやgccに独自のパッチを当てています。パッチ適用済みのソースはMinix Portsにまとめてあります。
- http://www.minix3.org/software/binutils-2.16.1.tar.bz2
- http://www.minix3.org/software/gcc-4.1.1.tar.bz2
targetオプションを付けてビルドすればクロス化できます。
binutils
MINIXのヘッダからa.out.hを持って来て、ansi.hをコメントアウトします。
これをbinutilsの中に入れてmakeします。
tar xvjf binutils-2.16.1.tar.bz2 ← MINIX用ソースを展開 cp a.out.h binutils-2.16.1/include ← a.out.hをコピー cd binutils-2.16.1 ./configure --target=i386-pc-minix ← 適宜prefixを指定 make make install
上の例ではprefixを指定していないため/usr/local以下にインストールされます。
ヘッダとライブラリ
インストール済みのMINIXからヘッダとライブラリを取り出します。/usr/libはACK用のため不要です。
/usr/includeはACK用のためそのままではgccで不具合があります。以下のディレクトリでオーバーライドしています。
パスが分散すると参照が面倒です。とりあえずACKは使用しないため、上書きコピーで統合しました。
こうして準備したincludeとlibを/usr/local/i386-pc-minixに入れます。私の方でまとめたincludeとlibを置いておきます。
gcc
ソースはMINIXでセルフコンパイルすることが前提で修正されているため、いくつかパッチを当てる必要があります。以下のパッチファイルを参照してください。
targetを指定してサブディレクトリで作業します。
tar xvjf gcc-4.1.1.tar.bz2 ← MINIX用ソースを展開 (パッチを適用) cd gcc-4.1.1 mkdir build ← 作業用のサブディレクトリを作成 cd build ../configure --target=i386-pc-minix ← 適宜prefixを指定 make make install
使用方法
コマンドにi386-pc-minix-というプレフィックスを付けます。
例: 【セルフ】gcc -o hello hello.c 【クロス】i386-pc-minix-gcc -o hello hello.c