Cygwin→FreeBSD4クロスコンパイラ作製失敗
aaacafeでAdaを使おうとやってみたのですができませんでした。
時間も無いのでメモだけ。
Cygwinインストーラでgcc,flex,bison,make,patchutilsあたりを入れます。(いつもmakeを忘れる)
aaacafeからCGIでexec "cp /usr/include/machine/*.h .";
とかやって以下のファイルを入手。
usr/include/machine/*.h usr/include/sys/*.h usr/include/*.h(dirent.h errno.h fcntl.h malloc.h pthread.h sched.h signal.h stdio.h stdlib.h string.h strings.h termios.h time.h unistd.h utime.h) usr/lib/*.o(crt1.o crti.o, crtn.o) usr/lib/*.a(libc.a)
いろいろ実行。
$ cd /usr/src/ $ tar zxf /cygdrive/.../binutils-2.15.tar.gz $ tar jxf /cygdrive/.../gcc-3.4.2.tar.bz2 $ cd binutils-2.15/ $ ./configure --prefix=/usr/i386-freebsd4/ --target=i386-freebsd4 --host=i386-cygwin $ make $ make install $ cd ../gcc-3.4.2/ $ ./configure --enable-languages=c,ada --prefix=/usr/i386-freebsd4/ --target=i386-freebsd4 --host=i386-cygwin $ make $ cd gcc $ make gnatlib_and_tools
以下のをどこかで実行しなければならないらしいのですがどこで実行してもmakeに失敗します。
$ cd gcc/ada $ touch treeprs.ads [es]info.h nmake.ad[bs] $ cd ../..
しなければmake gnatlib_and_toolsでundefined referenceでgnatmakeができず、makeより先にすればコンパイルエラーが起き、makeの後にすればやはりコンパイルエラーが起きるという始末。そもそもtouchって何なんだ…。らんらんるーって(ry
gccのpatchメーリングリストなど見ましても、gccのAdaとDarwinの組み合わせは鬼門らしいです。DarwinというのはBSD由来だそうですので、BSDとの組み合わせもなのでしょうか?私ざっと見でてきとー書いてますので信じないように。詳しい人おられましたら教えていただければ幸い。
コンソール窓を高速で流れる文字をざっと見てて思うのは、ソースを生成してそれを動かしてそれがまた…って、よく混乱しないなあと。いや、混乱してるから私がこうやってビルドに失敗してるのか?