ぱたへね

はてなダイアリーはrustの色分けができないのでこっちに来た

sparcのクロスコンパイル環境を用意する。

勉強用にcygwinで動くsparc向けのクロスコンパイル環境を作りました。
インストールは途中でエラー終了してしまいましたが、勉強には十分なので整理してみました。実際の開発に耐えられる物ではないので、注意してください。

gmp-4.1のインストール

GCCの4.3.0をインストールしようとすると、gmp-4.1とmpfr-2.3.1が必要と言われます。まずはこの2つを入れましょう。

http://cs.nyu.edu/exact/core/gmp/
から、gmp-static-cygwin-4.1.tar.gz をダウンロードします。
解凍したあと、libフォルダーをcygwinの/usr/libへ、includeフォルダーをcygwinの/usr/include にコピーすれば終了です。

mpfr-2.3.1のインストール

http://www.mpfr.org/mpfr-current/
から、mpfr-2.3.1.tar.gz をダウンロードします。

YUKI.N> tar -xvzf mpfr-2.3.1.tar.gz
YUKI.N> cd mpfr-2.3.1
YUKI.N> ./configure
YUKI.N>make
YUKI.N>make install
で問題なくできました。

binutils-2.18のインストール

http://ftp.gnu.org/gnu/binutils/
総本山からbinutils-2.18.tar.gz をダウンロードします。

YUKI.N>tar -xvzf binutils-2.18.tar.gz
YUKI.N>cd binutils-2.18/
YUKI.N>mkdir objdir
YUKI.N>cd objdir/
YUKI.N>../configure --target=sparc-elf --prefix=/usr/local/sparc-elf
YUKI.N>make
YUKI.N>make install

でインストールできました。

GCC-4.3.0のインストール

ftp://ftp.dti.ad.jp/pub/lang/gcc/releases/gcc-4.3.0/
ミラーサイトからgcc-4.3.0.tar.gzをダウンロードします。

YUKI.N>tar -xvzf gcc-4.3.0.tar.gz
YUKI.N>mkdir objdir
YUKI.N>cd objdir/
YUKI.N>../configure --target=sparc-elf --prefix=/usr/local/sparc-elf
YUKI.N>make
でエラーがでますが、それっぽいバイナリはできているので、きにせずmake installしました。
最後に、C:\cygwin\usr\local\sparc-elf\binにパスを通せば、コンパイルできるようになりました。
コンパイルのコマンドは、sparc-elf-gccです。

GCCのインストールで発生するエラー

make中に発生するエラーはこれです。

checking for shl_load... configure: error: Link tests are not allowed after GCC_NO_EXECUTABLES.

エラーメッセージで検索してみると、いっぱい引っかかります。言われるがままに、パッチを当ててconfigureからやり直しても、同じ結果になるので、深追いするのは止めました。たくさん報告が上がっているので、そのうちに修正されるでしょう。

この状態で、gccを起動するとこのようになります。
YUKI.N>sparc-elf-gcc imm.c
/usr/local/sparc-elf/lib/gcc/sparc-elf/4.3.0/../../../../sparc-elf/bin/ld: crt0.o: No such file: No such file or directory
collect2: ld returned 1 exit status

各コマンドは動いているようですが、ライブラリができていないようです。
Cのソースがどのようなマシン語を出すかを見るには十分なので、このままにしておきます。
個別のコマンドは動いているので、一個ずつライブラリを作っていけば問題は解決できると思います。

バイナリパッケージの配布

最後にバイナリをzipにしてまとめました。

http://pub.idisk-just.com/fview/HvBXAY5C7-4Xt3TuhJzHksYmsUt1FDy7biIiRVQTNolP68HLy5NefU-Jeo83WgnW

解凍したフォルダーをcygwinの/usr/local以下にコピー(C:\cygwin\usr\local\sparc-elf\binに各コマンドが来る)すれば、パスの設定だけ動くはずです。