ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

cygwinコミュのcygwinでMeCabがインストールできません

  • mixiチェック
  • このエントリーをはてなブックマークに追加
こんちゃ^^
初めての投稿なのですが、MeCab0.95がインストールできません。
utils.loがないとか、all-recursiveのエラーでとまってしまいます。
ネットでのやり方は殆どやってみましたが、コアな部分は、いまだわからずで、いい方法あれば教えてくださいペコリ(o_ _)o))
よろしくお願いいたします。

コメント(13)

どの段階でどういうエラーが出ているのか状況がわかりませんが,試しにmecab-0.95.tar.gzを落としてきて手元でmakeしたら実行ファイルは普通に生成できましたよ.(使う予定は無いので,make installはしてません)

tar xvzf mecab-0.95.tar.gz
cd mecab-0.95
./configure

まではいいとして,そのままmakeすると何やらエラーが出ますが,(エラーの内容からwindows.hをincludeしているのが原因だろうと推測し)configureで生成されたconfig.hの中の "#define HAVE_WINDOWS_H 1"をコメントアウトしてからmakeしたら,そのままビルドできました.
>Wazbones さん
書き込みありがとうございます。
そのなにやらのエラーと思われます。

やった結果ですがこんなことに;;
/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/bits/stl_bvector.h:522: error: expected unqualified-id
before '(' token
/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/bits/vector.tcc:307: error: expected unqualified-id be
fore '(' token
/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/bits/vector.tcc: In member function `void std::vector<
_Tp, _Alloc>::_M_range_insert(__gnu_cxx::__normal_iterator<typename _Alloc::pointer, std::vector<_Tp
, _Alloc> >, _ForwardIterator, _ForwardIterator, std::forward_iterator_tag)':
/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/bits/vector.tcc:384: error: expected unqualified-id be
fore '(' token

make[2]: *** [utils.lo] Error 1
make[2]: Leaving directory `/home/yu-tanaka/mecab-0.95/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/yu-tanaka/mecab-0.95'
make: *** [all-recursive-am] Error 2
となります。
ここから進みません。
なんとかなりますか?

よろしくお願いいたします。
いや,だから解決方法も書いたじゃないですか.ちゃんと読んでください.
>Wazbones さん
コメントアウトしてやっぱでるのですが・・・

make[2]: *** [libmecab.la] Error 1
make[2]: Leaving directory `/home/yu-tanaka/mecab-0.95/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/yu-tanaka/mecab-0.95'
make: *** [all-recursive-am] Error 2

これでいけてるとは思えないですが?
どうなんでしょ?すませんペコリ(o_ _)o))
こちらでは全く再現できないので,どうしようも無いのですが…

コメントアウトする前と後でエラーは全く変わらないんでしょうか?もしそうだとすると,疑うわけじゃないですが,正直言ってコメントアウトに失敗してるとしか思えません.あるいは,御自身で悪戦苦闘されている間にソースの中をいじったりしてないですか?

それと,

>> make[2]: *** [libmecab.la] Error 1

は「エラーがある」という事実しか示していないので,そこを提示されても情報ゼロです.

こちらでも試しにもう一度configureから試してみましたが,

configure
make

すると,いきなり初っ端で

/bin/sh ../libtool --mode=compile g++ -DHAVE_CONFIG_H -I. -I. -I.. -DDIC_VERSION=102 -DMECAB_DEFAULT_RC="\"/usr/local/etc/mecabrc\"" -O3 -Wall -Wno-deprecated -c utils.cpp
g++ -DHAVE_CONFIG_H -I. -I. -I.. -DDIC_VERSION=102 -DMECAB_DEFAULT_RC=\"/usr/local/etc/mecabrc\" -O3 -Wall -Wno-deprecated -c utils.cpp -DPIC -o .libs/utils.o
In file included from /usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/vector:72,
from utils.h:19,
from utils.cpp:33:
/usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/bits/stl_bvector.h: In member function `void std::vector<bool, _Alloc>::_M_insert_range(std::_Bit_iterator, _ForwardIterator, _ForwardIterator, std::forward_iterator_tag)':
以下略

という感じのエラーになります.エラーを見ると「utils.cppからincludeされているutils.hから更にincludeされているvector」でエラーが出ていることがわかります.詳細は省きますが,今回のこのエラーの原因はwindows.hをincludeしていることにあります.そこで,前にも書いたようにconfig.hの中を編集して"#define HAVE_WINDOWS_H 1"をコメントアウトし,そのままmakeすると,(warningは大量に出ますが)ビルドが完了します.
コメントアウトだけだと、私も失敗しました。
…が、なぜか何回かやり直した所Wazbonesさんと同様一応コンパイル通るようになっています。何か条件が変わったのだとは思いますけど、それが何なのかは追いかける気がしませんです。
かなり役立たずですが、一応、情報を。
>Wazbones さん ayumew さん
./configure --prefix=/usr --with-charset=utf8
make
でエラーですね

config.hはこんな感じでしましたよ
/* Define to 1 if you have the <windows.h> header file. */
/*#define HAVE_WINDOWS_H 1*/
たぶんこれでいけてそう?

ででたのが
make all-recursive
make[1]: Entering directory `/home/yu-tanaka/mecab-0.95'
Making all in src
make[2]: Entering directory `/home/yu-tanaka/mecab-0.95/src'
/bin/sh ../libtool --mode=link g++ -O3 -Wall -Wno-deprecated -o libmecab.la -rpath /usr/lib -no-un
defined -version-info 1:0:0 utils.lo eval.lo iconv_utils.lo dictionary_rewriter.lo dictionary_genera
tor.lo dictionary_compiler.lo context_id.lo connector.lo nbest_generator.lo writer.lo string_buffer.
lo viterbi.lo param.lo tokenizer.lo char_property.lo tagger.lo dictionary.lo feature_index.lo lbfgs.
lo learner_tagger.lo learner.lo libmecab.lo -lpthread -lpthread -lpthread -lstdc++
rm -fr .libs/libmecab.dll.a
g++ -shared -nostdlib .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/n
best_generator.o .libs/writer.o .libs/string_buffer.o .libs/viterbi.o .libs/param.o .libs/tokenizer.
o .libs/char_property.o .libs/tagger.o .libs/dictionary.o .libs/feature_index.o .libs/lbfgs.o .libs/
learner_tagger.o .libs/learner.o .libs/libmecab.o -lpthread -lstdc++ -L/usr/lib/gcc/i686-pc-cygwin/
3.4.4 -L/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../.. -lstdc++ -lgcc -lcygwin -luser32 -lkernel32 -ladv
api32 -lshell32 -lgcc -o .libs/cygmecab-1.dll -Wl,--enable-auto-image-base -Xlinker --out-implib -
Xlinker .libs/libmecab.dll.a
.libs/iconv_utils.o:iconv_utils.cpp:(.text+0x4b): undefined reference to `_libiconv_open'
.libs/iconv_utils.o:iconv_utils.cpp:(.text+0xdc): undefined reference to `_libiconv_close'
.libs/iconv_utils.o:iconv_utils.cpp:(.text+0x10c): undefined reference to `_libiconv_close'
.libs/iconv_utils.o:iconv_utils.cpp:(.text+0x146): undefined reference to `_libiconv_close'
.libs/iconv_utils.o:iconv_utils.cpp:(.text+0x2a8): undefined reference to `_libiconv'
.libs/iconv_utils.o:iconv_utils.cpp:(.text+0x2e7): undefined reference to `_libiconv'
Creating library file: .libs/libmecab.dll.a
collect2: ld returned 1 exit status
make[2]: *** [libmecab.la] Error 1
make[2]: Leaving directory `/home/yu-tanaka/mecab-0.95/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/yu-tanaka/mecab-0.95'
make: *** [all-recursive-am] Error 2

前とは違いますね。
これでなんかわかります?すませんペコリ(o_ _)o))
たびたび;;
> .libs/iconv_utils.o:iconv_utils.cpp:(.text+0x4b): undefined reference to `_libiconv_open'

_libで始まっているのが気になりますが、iconv ライブラリの
関数を使おうとしているような感じですね。
ライブラリに iconv ははいってますか?
もしかして、config.hを編集した後で、またconfigureしてないかい?config.hはconfigureによってconfig.h.inを元に生成されるファイルだから、config.hを先に弄っちゃだめよ。
>ほげむた さん
みてみます。ペコリ(o_ _)o))
ありがとうございます。

>ミレーヌ・ジーナス さん
それをするとconfig.hが戻ってしまうので、せずにMAKEしてます。
その結果です;;
書き込みありがとうございます。
だーなぜだかできますたw

で、必要そうなものがsrcにあったのでそれを.libsにコピー

./configure --prefix=/usr --with-charset=utf8 --with-libiconv-prefix=.libs LIBS='-liconv'

で、config.hはさわらずで、makeで完了

なんだこりゃ?
皆様、ありがとうございました。非常に助かりました。
ペコリ(o_ _)o))

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

cygwin 更新情報

cygwinのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング