ツール群

CygwinでのMeCab 0.994のビルド - ツール群

現象

  • 僕の使用しているCygwin環境下でMeCab 0.994のビルドがなぜかうまくいかなかった
  • 結論:libiconvをインストールしよう,makeをインストールしよう(おい)

作業内容

  1. 普通にビルドしようとしたら,まずconfigureでコケた
    $ ./configure --with-charset=utf-8 --enable-utf8-only LIBS=-liconv --prefix=/usr/local
    ...(中略)...
    checking whether the C compiler works... no
    ...
  2. configure.logを見てみたら,-liconvが見つからないよと怒られていたので,libiconvをインストール(libiconv2は入ってたんだけどなぁ…)
  3. configureが通った(´◔౪◔)۶ヨッシャ!
  4. 通ったのでおとなしく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使ってるのが問題なんじゃないか?(しらんけど)
  5. libtoolをインストールした上でLIBTOOLを設定して再度configureするなどしたが解決せず
  6. makeがおかしいのではと思いwhich makeしたらなんということでしょう
    $ which make
    /cygdrive/c/WinAVR-20100110/utils/bin/make
    ふざけんなよおいこいつが犯人か… 要するにCygwinにmake入れてなかったのね
  7. ということでmakeをインストールしてconfigureしてからmake
    $ ./configure --with-charset=utf-8 --enable-utf8-only LIBS=-liconv --prefix=/usr/local
    $ /usr/bin/make
    ...
    今度はリンクする段階でエラーが出た
  8. ググって何かパッチ当てるらしいぜってのを今更知る
    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しちゃう関連の問題っぽいですね…
  9. 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
  10. おつかれさまでした…
    http://pckles.com/tokoro10g/6c31e1.png

まとめ

  • CygwinはWindows環境と変に同調するから厄介
  • Linuxでやればこんな面倒な事は無いのになぁ…

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2012-11-04 (日) 03:52:06 (1781d)