perlのエラーについて


perlのエラーについて
Can't find 'boot_MeCab' symbol in /opt/local/lib/libMeCab.dylib
at /opt/local/lib/perl5/site_perl/5.16.3/darwin-thread-multi-2level/MeCab.pm line 11.
Compilation failed in require at ~.pl line 20, <DATA> line 855.
BEGIN failed--compilation aborted at ~.pl line 20, <DATA> line 855.

MeCab.pmの11行目はbootstrap MeCab;
となっています。

/opt/local/lib/libMeCab.dylib
at /opt/local/lib/perl5/site_perl/5.16.3/darwin-thread-multi-2level/MeCab.pm line 11.
の場所に'boot_MeCab' symbolがないってことですか?
portでsearchしてもboot_MeCabなんてなくて...
どうしたらこのエラーが解決しますでしょうか?

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2014/04/29 11:45:07

回答2件)

id:a-kuma3 No.1

回答回数4973ベストアンサー獲得回数2154

MeCab の本体はインストールしたのでしょうか?

MeCab のプロジェクトは、sourceforge から Google code に移ったみたいです。
sourceforge の方には、本体が置いてなさそうなので、取得は Google code の方から。
http://mecab.googlecode.com/svn/trunk/mecab/doc/index.html#download

インストールの手順は、前と同じです(先のドキュメントにも書いてありますが)。

% tar zxfv mecab-0.996.tar.gz
% cd mecab-0.996
% ./configure
% make
% su
# make install

まずは、本体の方だけで、動くかどうかを確認しましょう。
http://d.hatena.ne.jp/mrgoofy33/20110406/1302019908

↑の後半には、MeCab.pm のことも書いてあります。
こちらも、まずは付属してくるテストプログラム (test.pl) が、動くかどうか確認しましょう。
MeCab のライブラリにパスが通ってなくて、みたいなことが書いてあるので、そちらも参考になるかも。


後、最近は、Text::MeCab ってのが良いらしいですよ。
http://wg.drive.ne.jp/miura/archives/2463
http://logic.moo.jp/data/archives/508.html

id:fiwa No.2

回答回数1200ベストアンサー獲得回数253

ちょっと興味が湧いたので試してみました。
通常どおりMeCab、MeCab-ipadic、MeCab-perlをインストールしてMeCab-Perlにあったtest.plを実行してみたところ、同様のエラーが再現されました。
f:id:fiwa:20140423195858p:image
ところで、"boot_MeCab"というのはこういうことみたいです。

boostrap()
構文:
bootstrap($module)
これは、Perl での自動的な動的ロードの通常のエントリポイントです。
これは、以下の動作を行ないます:
・・・
+ ("boot_$module") を @dl_require_symbols に設定します

http://www.ie.u-ryukyu.ac.jp/~kono/perlman/cat3/Dynaloader.html

さて、MeCab-perlで make testしたところ、次のような警告が出ていました。

ld: warning: ignoring file /usr/local/lib/libmecab.dylib, file was built for x86_64 which is not the architecture being linked (i386): /usr/local/lib/libmecab.dylib

そこでMeCabをi386でコンパイルし直してみました。

./configure CFLAGS='-arch i386' --with-charset=utf8
make
sudo make install

そうすると、perlからMeCabが使えるようになりました。
f:id:fiwa:20140423195857p:image
以上、環境による違いがあったら悪しからず。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません