Gauche-0.8.5 がコンパイルできない件について

家のサーバで gosh をコンパイルしようとすると、なぜか「不正な命令です」と出る。原因がさっぱり分からないので、Webで情報を漁ってたらこんな記事を発見。

VIA EPIA と 686 対応カーネルgcc の組み合わせはダメみたいです。

うーむ、見事にレアケースにぶち当たったみたいだなぁ。

# 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