- 普通にビルドしようとしたら,まずconfigureでコケた
$ ./configure --with-charset=utf-8 --enable-utf8-only LIBS=-liconv --prefix=/usr/local
...(中略)...
checking whether the C compiler works... no
...
- configure.logを見てみたら,-liconvが見つからないよと怒られていたので,libiconvをインストール(libiconv2は入ってたんだけどなぁ…)
- configureが通った(´◔౪◔)۶ヨッシャ!
- 通ったのでおとなしくmakeしようとしたが以下のエラー
$ make
C:/cygwin/bin/sh.exe ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -
I. -I.. -DDIC_VERSION=102 -DMECAB_USE_UTF8_ONLY -DMECAB_DEFAULT_RC="\"/usr/loca
l/etc/mecabrc\"" -I/usr/include -O3 -Wall -c -o utils.lo utils.cpp
libtool: compile: g++ -DHAVE_CONFIG_H -I. -I.. -DDIC_VERSION=102 -DMECAB_USE_UT
F8_ONLY -DMECAB_DEFAULT_RC=\\\\/usr/local/etc/mecabrc\\\\ -I/usr/include -O3 -Wa
ll -c utils.cpp -DDLL_EXPORT -DPIC -o .libs/utils.o
utils.cpp:370:5: error: stray '\' in program
utils.cpp:370:5: error: stray '\' in program
utils.cpp:370:5: error: stray '\' in program
utils.cpp:370:5: error: stray '\' in program
utils.cpp: In function 'bool MeCab::load_dictionary_resource(MeCab::Param*)':
utils.cpp:370:14: error: expected primary-expression before '/' token
utils.cpp:370:14: error: 'usr' was not declared in this scope
utils.cpp:370:14: error: 'local' was not declared in this scope
utils.cpp:370:14: error: 'etc' was not declared in this scope
utils.cpp:370:14: error: 'mecabrc' was not declared in this scope
make: *** [utils.lo] Error 1
どうやらlibtoolが怪しい(-DMECAB_DEFAULT_RCの文字エスケープが変)
なんか../libtool使ってるのが問題なんじゃないか?(しらんけど)
- libtoolをインストールした上でLIBTOOLを設定して再度configureするなどしたが解決せず
- makeがおかしいのではと思いwhich makeしたらなんということでしょう
$ which make
/cygdrive/c/WinAVR-20100110/utils/bin/make
ふざけんなよおいこいつが犯人か… 要するにCygwinにmake入れてなかったのね
- ということでmakeをインストールしてconfigureしてからmake
$ ./configure --with-charset=utf-8 --enable-utf8-only LIBS=-liconv --prefix=/usr/local
$ /usr/bin/make
...
今度はリンクする段階でエラーが出た
- ググって何かパッチ当てるらしいぜってのを今更知る
http://unlearned-superficial-knowledge.blogspot.jp/2012/08/mecab-0994cygwin.html
$ wget -O ../mecab-0.994-cygwin.diff --no-check-certificate https://bitbucket.org/dianthus/patch/raw/cadd34d3dc547696897f58e2986bc7ab10054b40/mecab-0.994-cygwin.diff
$ patch -p1 <../mecab-0.994-cygwin.diff
よく読んでないけど,昔も問題になってたらしいwindows.hをincludeしちゃう関連の問題っぽいですね…
- configure,makeしなおし
$ ./configure --with-charset=utf-8 --enable-utf8-only LIBS=-liconv --prefix=/usr/local
$ /usr/bin/make clean
$ /usr/bin/make
$ /usr/bin/make install
- おつかれさまでした…