2012-09-24 :-(
_ cygwin に mecab をインストールする(失敗)
環境
cygwin
% uname -a CYGWIN_NT-6.1-WOW64 kotomi 1.7.16(0.262/5/3) 2012-07-20 22:55 i686 Cygwin
mecab-0.994 MeCab: Yet Another Part-of-Speech and Morphological Analyzer
make したら怒られた。
% ./configure && make : ctionary_rewriter.lo dictionary_generator.lo dictionary_compiler.lo context_id.lo connector.lo nbest_generator.lo writer.lo string_buffer.lo param.lo tokenizer.lo char_property.lo dictionary.lo feature_index.lo lbfgs.lo learner_tagger.lo learner.lo libmecab.lo -lpthread -lpthread -lstdc++ libtool: link: g++ -shared -nostdlib /usr/lib/gcc/i686-pc-cygwin/4.5.3/crtbegin.o .libs/viterbi.o .libs/tagger.o .libs/utils.o .libs/eval.o .libs/iconv_utils.o .libs/dictionary_rewriter.o .libs/dictionary_generator.o .libs/dictionary_compiler.o .libs/context_id.o .libs/connector.o .libs/nbest_generator.o .libs/writer.o .libs/string_buffer.o .libs/param.o .libs/tokenizer.o .libs/char_property.o .libs/dictionary.o .libs/feature_index.o .libs/lbfgs.o .libs/learner_tagger.o .libs/learner.o .libs/libmecab.o -lpthread -L/usr/lib/gcc/i686-pc-cygwin/4.5.3 -L/usr/lib/gcc/i686-pc-cygwin/4.5.3/../../.. /usr/lib/gcc/i686-pc-cygwin/4.5.3/libstdc++.dll.a -lgcc_s -lgcc -lcygwin -luser32 -lkernel32 -ladvapi32 -lshell32 -lgcc_s -lgcc /usr/lib/gcc/i686-pc-cygwin/4.5.3/crtend.o -O3 -o .libs/cygmecab-2.dll -Wl,--enable-auto-image-base -Xlinker --out-implib -Xlinker .libs/libmecab.dll.a Creating library file: .libs/libmecab.dll.a .libs/viterbi.o:viterbi.cpp:(.text+0x1505): undefined reference to `std::vector<mecab_path_t*, std::allocator<mecab_path_t*> >::_M_insert_aux(__gnu_cxx::__normal_iterator<mecab_path_t**, std::vector<mecab_path_t*, std::allocator<mecab_path_t*> > >, mecab_path_t* const&)' .libs/viterbi.o:viterbi.cpp:(.text+0x17ed): undefined reference to `std::vector<mecab_path_t*, std::allocator<mecab_path_t*> >::_M_insert_aux(__gnu_cxx::__normal_iterator<mecab_path_t**, std::vector<mecab_path_t*, std::allocator<mecab_path_t*> > >, mecab_path_t* const&)' .libs/viterbi.o:viterbi.cpp:(.text+0x1b2f): undefined reference to `std::vector<char, std::allocator<char> >::_M_fill_insert(__gnu_cxx::__normal_iterator<char*, std::vector<char, std::allocator<char> > >, unsigned int, char const&)' .libs/viterbi.o:viterbi.cpp:(.text+0x1b5a): undefined reference to `std::vector<char*, std::allocator<char*> >::_M_insert_aux(__gnu_cxx::__normal_iterator<char**, std::vector<char*, std::allocator<char*> > >, char* const&)' .libs/viterbi.o:viterbi.cpp:(.text+0x1bfc): undefined reference to `std::vector<std::pair<char*, char*>, std::allocator<std::pair<char*, char*> > >::reserve(unsigned int)' .libs/viterbi.o:viterbi.cpp:(.text+0x1f17): undefined reference to `std::vector<std::pair<char*, char*>, std::allocator<std::pair<char*, char*> > >::_M_insert_aux(__gnu_cxx::__normal_iterator<std::pair<char*, char*>*, std::vector<std::pair<char*, char*>, std::allocator<std::pair<char*, char*> > > >, std::pair<char*, char*> const&)' .libs/viterbi.o:viterbi.cpp:(.text+0x1f9e): undefined reference to `std::vector<mecab_node_t*, std::allocator<mecab_node_t*> >::_M_insert_aux(__gnu_cxx::__normal_iterator<mecab_node_t**, std::vector<mecab_node_t*, std::allocator<mecab_node_t*> > >, mecab_node_t* const&)' /usr/lib/gcc/i686-pc-cygwin/4.5.3/../../../../i686-pc-cygwin/bin/ld: .libs/viterbi.o: bad reloc address 0xb in section `.text$_ZN5MeCab10scoped_ptrINS_4MmapIsEEED1Ev[MeCab::scoped_ptr<MeCab::Mmap<short> >::~scoped_ptr()]' collect2: ld returned 1 exit status Makefile:375: recipe for target `libmecab.la' failed make[2]: *** [libmecab.la] Error 1 make[2]: ディレクトリ `/home/public/mecab-0.994/src' から出ます Makefile:409: recipe for target `all-recursive' failed make[1]: *** [all-recursive] Error 1 make[1]: ディレクトリ `/home/public/mecab-0.994' から出ます Makefile:282: recipe for target `all' failed make: *** [all] Error 2
ググると CygwinでMeCabを使う - d.hatena.ne.jp/muraokaz/ ヒットしたので libiconv を
% ./configure --prefix=/usr/local && make && make install
などして mecab を
% ./configure --with-charser=utf-8 LIBS="-liconv" CPPFLAGS=-DNOMINMAX
などしてみたんだけどやはり同じエラーになり面倒くさいので挫けた。
[ツッコミを入れる]