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なんてなくて...
どうしたらこのエラーが解決しますでしょうか?
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
ちょっと興味が湧いたので試してみました。
通常どおりMeCab、MeCab-ipadic、MeCab-perlをインストールしてMeCab-Perlにあったtest.plを実行してみたところ、同様のエラーが再現されました。
ところで、"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
コメント(0件)