なぜ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 · GitHub のgc.hに対する変更を手動で反映させた。他ファイルは反映されているようだったので、何がおきたのだろうか。