Cygwin64でGauche 0.9.4をコンパイル

なぜGaucheコンパイルするのか

メールフィルタとして今もscmailを使っているので、Gaucheが必要になる。最近はWEB上でメールを読むのでほとんど必要としないのだけど、メールをローカルに保存することがたまにある。

で、scmailをCygwin64でも使える状態しておくことにした。Gauche 0.9.4のソース(Gauche-0.9.4.tgz)をダウンロードして、コンパイルを始めた。

エラー発生

Cygwin64環境でコンパイル中に下のエラーが発生した。

TARGETLIB=`pwd`  gcc -std=gnu99 -g -O2  -Wl,--rpath -Wl,`pwd` -L.  -Wl,--enable-auto-import -o gosh.exe main.o -lgauche-0.9 -lrt -lm  -lpthread
main.o:main.c:(.rdata$.refptr._bss_start__[.refptr._bss_start__]+0x0): `_bss_start__' に対する定義されていない参照です
main.o:main.c:(.rdata$.refptr._data_start__[.refptr._data_start__]+0x0): `_data_start__' に対する定義されていない参照です
main.o:main.c:(.rdata$.refptr._bss_end__[.refptr._bss_end__]+0x0): `_bss_end__' に対する定義されていない参照です
main.o:main.c:(.rdata$.refptr._data_end__[.refptr._data_end__]+0x0): `_data_end__' に対する定義されていない参照です
collect2: エラー: ld はステータス 1 で終了しました

パッチの適用

調べると0.9.4では対応済みのようだったのだけど、何故か修正が反映されていないように見える。なので、fix cygwin64 · shirok/Gauche@9e6d0c8 · GitHubgc.hに対する変更を手動で反映させた。他ファイルは反映されているようだったので、何がおきたのだろうか。

コンパイル後の確認

修正でコンパイルが通り、make checkを実行すると大体パスしていた。cygwin環境でこれだけpassしていれば大丈夫だろうと思い、内容は確認していない。

Total: 14431 tests, 14426 passed,     5 failed,     1 aborted.