前のエントリのC++でmecab動かすと文字化けする??の件、id:download_takeshiさんのところでやってたプログラムが動いたとの事でコピペしてみたら、動く!違いを見るとg++の代わりにcc使ってる事くらいかと思ったけど、よーくみるとmecab-config --libs|--cflagsを明示的に指定している。俺はこれは適当に手で-I -L等を指定していたのだ。

するとよく考えると俺は今までこのコマンドを実行していた
g++ -lmecab mecab.cpp
ん・・・まてよ・・・mecab-config --cflagsと--libsの値は・・・?
daisuke@beefcake $ mecab-config --cflags -I/usr/local/include daisuke@beefcake $ mecab-config --libs -L/usr/local/lib -lmecab -lstdc++
あああ、ひょっとして・・・
daisuke@beefcake $ ls -l /usr/local/lib/libmecab.* /usr/local/lib/libmecab.1.0.0.dylib /usr/local/lib/libmecab.dylib /usr/local/lib/libmecab.1.dylib /usr/local/lib/libmecab.la /usr/local/lib/libmecab.a daisuke@beefcake $ ls -l /usr/lib/libmecab.* /usr/lib/libmecab.1.0.0.dylib /usr/lib/libmecab.dylib /usr/lib/libmecab.1.dylib
なああにいいいい。二つコピーがある・・・orz orz orz

っていうことは、去年の9月?くらいにコンパイルしたとおぼしきバージョンにはこの問題があるのかもしれん。もしくはなんかが根本的に違うのか。ともあれ、リンクしているライブラリのバージョンが違った!という落ちでした。はぁがっかり

ちなみにid:download_takeshiさんのプログラムを最初のg++ -lmecab takeshi.cppみたいにして動かすと、ハングしてました。明らかになんかおかしかったんだね。