Gauche-0.8.5 がコンパイルできない件について
家のサーバで gosh をコンパイルしようとすると、なぜか「不正な命令です」と出る。原因がさっぱり分からないので、Webで情報を漁ってたらこんな記事を発見。
うーむ、見事にレアケースにぶち当たったみたいだなぁ。
# make for d in gc src lib ext doc; do (cd $d; make all); done make[1]: ディレクトリ `/usr/local/src/Gauche-0.8.5/gc' に入ります Making all in doc make[2]: ディレクトリ `/usr/local/src/Gauche-0.8.5/gc/doc' に入ります make[2]: `all' に対して行うべき事はありません。 make[2]: ディレクトリ `/usr/local/src/Gauche-0.8.5/gc/doc' から出ます Making all in include make[2]: ディレクトリ `/usr/local/src/Gauche-0.8.5/gc/include' に入ります make[2]: `all' に対して行うべき事はありません。 make[2]: ディレクトリ `/usr/local/src/Gauche-0.8.5/gc/include' から出ます make[2]: ディレクトリ `/usr/local/src/Gauche-0.8.5/gc' に入ります make[2]: `all-am' に対して行うべき事はありません。 make[2]: ディレクトリ `/usr/local/src/Gauche-0.8.5/gc' から出ます make[1]: ディレクトリ `/usr/local/src/Gauche-0.8.5/gc' から出ます make[1]: ディレクトリ `/usr/local/src/Gauche-0.8.5/src' に入ります make[1]: `all' に対して行うべき事はありません。 make[1]: ディレクトリ `/usr/local/src/Gauche-0.8.5/src' から出ます make[1]: ディレクトリ `/usr/local/src/Gauche-0.8.5/lib' に入ります make[1]: `all' に対して行うべき事はありません。 make[1]: ディレクトリ `/usr/local/src/Gauche-0.8.5/lib' から出ます make[1]: ディレクトリ `/usr/local/src/Gauche-0.8.5/ext' に入ります for d in auxsys threads uvector charconv binary net termios fcntl sxml syslog dbm mt-random digest vport; do (cd $d; make default); done make[2]: ディレクトリ `/usr/local/src/Gauche-0.8.5/ext/auxsys' に入ります ../..//src/gosh -ftest genstub auxsyslib.stub make[2]: *** [auxsyslib.c] 不正な命令です make[2]: ディレクトリ `/usr/local/src/Gauche-0.8.5/ext/auxsys' から出ます make[2]: ディレクトリ `/usr/local/src/Gauche-0.8.5/ext/threads' に入ります ../..//src/gosh -ftest genstub thrlib.stub make[2]: *** [thrlib.c] 不正な命令です make[2]: ディレクトリ `/usr/local/src/Gauche-0.8.5/ext/threads' から出ます make[2]: ディレクトリ `/usr/local/src/Gauche-0.8.5/ext/uvector' に入ります rm -rf uvector.c ../..//src/gosh -ftest -ftest ./uvgen.scm uvector.c.tmpl make[2]: *** [uvector.c] 不正な命令です make[2]: ディレクトリ `/usr/local/src/Gauche-0.8.5/ext/uvector' から出ます make[2]: ディレクトリ `/usr/local/src/Gauche-0.8.5/ext/charconv' に入ります ../..//src/gosh -ftest genstub convlib.stub make[2]: *** [convlib.c] 不正な命令です make[2]: ディレクトリ `/usr/local/src/Gauche-0.8.5/ext/charconv' から出ます make[2]: ディレクトリ `/usr/local/src/Gauche-0.8.5/ext/binary' に入ります ../..//src/gosh -ftest genstub binarylib.stub make[2]: *** [binarylib.c] 不正な命令です make[2]: ディレクトリ `/usr/local/src/Gauche-0.8.5/ext/binary' から出ます make[2]: ディレクトリ `/usr/local/src/Gauche-0.8.5/ext/net' に入ります ../..//src/gosh -ftest genstub netlib.stub make[2]: *** [netlib.c] 不正な命令です make[2]: ディレクトリ `/usr/local/src/Gauche-0.8.5/ext/net' から出ます make[2]: ディレクトリ `/usr/local/src/Gauche-0.8.5/ext/termios' に入ります gcc -DHAVE_CONFIG_H -I. -I../../src -I../../gc/include -I./../uvector -g -O2 -fPIC -fomit-frame-pointer -march=i686 -DUSE_I686_PREFETCH -c termios.c termios.c:37 から include されたファイル中: gauche/termios.h:40:28: gauche/uvector.h: そのようなファイルやディレクトリは ありません termios.c: 関数 `termios_c_cc_get' 内: termios.c:78: 警告: returnにより、キャストなしで整数からポインタを作りました termios.c: 関数 `termios_c_cc_set' 内: termios.c:90: 警告: 引数 2 個の `memcpy' を渡しますにより、 キャストなしで整数からポインタを作りました make[2]: *** [termios.o] エラー 1 make[2]: ディレクトリ `/usr/local/src/Gauche-0.8.5/ext/termios' から出ます make[2]: ディレクトリ `/usr/local/src/Gauche-0.8.5/ext/fcntl' に入ります ../..//src/gosh -ftest genstub fcntlib.stub make[2]: *** [fcntlib.c] 不正な命令です make[2]: ディレクトリ `/usr/local/src/Gauche-0.8.5/ext/fcntl' から出ます make[2]: ディレクトリ `/usr/local/src/Gauche-0.8.5/ext/sxml' に入ります ../..//src/gosh -ftest ./trans.scm ssax.scm.in make[2]: *** [ssax.scm] 不正な命令です make[2]: ディレクトリ `/usr/local/src/Gauche-0.8.5/ext/sxml' から出ます make[2]: ディレクトリ `/usr/local/src/Gauche-0.8.5/ext/syslog' に入ります ../..//src/gosh -ftest genstub syslog.stub make[2]: *** [syslog.c] 不正な命令です make[2]: ディレクトリ `/usr/local/src/Gauche-0.8.5/ext/syslog' から出ます make[2]: ディレクトリ `/usr/local/src/Gauche-0.8.5/ext/dbm' に入ります make[2]: *** [link] 不正な命令です make[2]: ディレクトリ `/usr/local/src/Gauche-0.8.5/ext/dbm' から出ます make[2]: ディレクトリ `/usr/local/src/Gauche-0.8.5/ext/mt-random' に入ります gcc -DHAVE_CONFIG_H -I. -I../../src -I../../gc/include -I./../uvector -g -O2 -fPIC -fomit-frame-pointer -march=i686 -DUSE_I686_PREFETCH -c mt-random.c mt-random.c:60 から include されたファイル中: mt-random.h:52:28: gauche/uvector.h: そのようなファイルやディレクトリはありません make[2]: *** [mt-random.o] エラー 1 make[2]: ディレクトリ `/usr/local/src/Gauche-0.8.5/ext/mt-random' から出ます make[2]: ディレクトリ `/usr/local/src/Gauche-0.8.5/ext/digest' に入ります ../..//src/gosh -ftest genstub md5.stub make[2]: *** [md5.c] 不正な命令です make[2]: ディレクトリ `/usr/local/src/Gauche-0.8.5/ext/digest' から出ます make[2]: ディレクトリ `/usr/local/src/Gauche-0.8.5/ext/vport' に入ります gcc -DHAVE_CONFIG_H -I. -I../../src -I../../gc/include -I./../uvector -g -O2 -fPIC -fomit-frame-pointer -march=i686 -DUSE_I686_PREFETCH -c vport.c vport.c:37:28: gauche/uvector.h: そのようなファイルやディレクトリはありません vport.c: 関数 `bport_fill' 内: vport.c:513: 警告: 代入により、キャストなしで整数からポインタを作りました vport.c: 関数 `bport_flush' 内: vport.c:532: 警告: 代入により、キャストなしで整数からポインタを作りました make[2]: *** [vport.o] エラー 1 make[2]: ディレクトリ `/usr/local/src/Gauche-0.8.5/ext/vport' から出ます make[1]: *** [all] エラー 2 make[1]: ディレクトリ `/usr/local/src/Gauche-0.8.5/ext' から出ます make[1]: ディレクトリ `/usr/local/src/Gauche-0.8.5/doc' に入ります ../src/gosh -q -I../src -I../lib -lgauche-init ./extract -en -o gauche-refe.texi gauche-ref.texi make[1]: *** [gauche-refe.texi] 不正な命令です make[1]: ディレクトリ `/usr/local/src/Gauche-0.8.5/doc' から出ます make: *** [all] エラー 2