出来た!!
どうやらcygwinのperlにバグがあるらしい。
詳しくはここ。
要は、現在最新のPerlバイナリは改行コードを勝手に\r\nにしてくれるのだ。
このリンク先にあるように、perlのバージョンをひとつ落とすことで、YamChaのmake check問題は解決。
で、結局YamChaはTinySVMのshared libraryを要求していないので、TinySVMは--enable-shared=noでコンパイルしても問題ない。
よって、22日に載せたインチキパッチは必要なし。
また、YamChaもChaSenもshared libraryである必要はないみたい。
なので、この2つも--enable-shared=noでコンパイルしてOK。
問題のCaboChaは、やっぱりshared library化するとコンパイルが通らない。
更に、ChaSenのstatic libraryを利用したいので、以下のようにすればconfigureすれば良い。
./configure --enable-shared=no --enable-chasen-static=yes
更に、ChaSenのstatic libraryを利用するにあたって、ちょっとしたバグがあるので次のパッチを当ててコンパイルする。
--- cabocha-0.40/src/chasenio.cpp.org +++ cabocha-0.40/src/chasenio.cpp @@ -112,7 +112,7 @@ #ifndef CHASEN_USE_STATIC char *p = (char *)(*(instance->fpParse))(tree->sentence.c_str()); #else - char *p = (char *)chasen_sparse_tostr(const_casttree->sentence.c_st r())); + char *p = (char *)chasen_sparse_tostr(const_cast (tree->sentence.c_s tr())); #endif std::istrstream istr (p, strlen (p)); tree->read (istr, INPUT_POS);
以上で、cygwin環境でもCaboChaが使えます。
いやー長い道のりであった。