FreeBSD $B$G(B ruby-mecab $B$N%i%$%V%i%j;2>H$NIT6q9g(B

e$B$-$7$b$H$G$9e(B

FreeBSD7.2 (RELENG_7) e$B$G!"e(BCVS e$B$+$i<h$C$F$-$?e(B ports
e$B$r;H$C$F$$$^$9!#e(B
Ruby e$B$N%P!<%8%g%s$Oe(B
$ ruby --version
ruby 1.8.7 (2009-04-08 patchlevel 160) [amd64-freebsd7]
e$B$H$J$C$F$$$^$9!#e(B

ruby-mecab e$B$N%S%k%I$G!"e(B

[/usr/ports/japanese/ruby-mecab]$ make configure
===> ja-ruby18-mecab-0.97 depends on file: /usr/local/bin/ruby18 -
found
===> ja-ruby18-mecab-0.97 depends on shared library: mecab.1 - found
===> Configuring for ja-ruby18-mecab-0.97
===> Running extconf.rb to configure
checking for main() in -lmecab… no
checking for main() in -lstdc++… yes
checking for mecab.h… yes
creating Makefile

e$B$H!“e(BMeCab
e$B$N%7%’%”!<%I%i%$%V%i%j$OF~$C$F$$$k$N$G$9$,!"e(Bextconf.rb
e$B$+$i$Oe(B
e$B8+$($F$$i$:!"%S%k%[email protected]$9$k$N$G$9$,!"e(Bmecab
e$B$r;H$
$&$H$9$k$H!"e(B

$ ruby test.rb
0.97
/libexec/ld-elf.so.1:
/usr/local/lib/ruby/site_ruby/1.8/amd64-freebsd7/MeCab.so: Undefined
symbol “_ZN5MeCab12createTaggerEPKc”

e$B$N$h$&$K!"%@%$%J%%C%/%j%s%/$K<:GT$7$^$9!#e(BLD_LIBRARY_PATH=/usr/local/lib
e$B$re(B
e$BIU$1$F$
$^$7$?$,JQ2=$"$j$^$;$s$G$7$?!#e(B

e$BB>$N3HD%%b%8%e!<%k$G$b5/$-$k$N$+$I$&$+$o$+$j$^$;$s$,!"3NG’$7$?$H$3$m$NJs9p$^$G!#e(B

e$B?\F#$G$9!#e(B

In [email protected]
“[ruby-dev:38731] FreeBSD e$B$Ge(B ruby-mecab
e$B$N%i%$%V%i%j;2>H$NIT6q9ge(B” on Sat, 4 Jul 2009 15:30:04 +0900,
“KISHIMOTO, Makoto” [email protected] wrote:

FreeBSD7.2 (RELENG_7) e$B$G!"e(BCVS e$B$+$i<h$C$F$-$?e(B ports e$B$r;H$C$F$$$^$9!#e(B
Ruby e$B$N%P!<%8%g%s$Oe(B
$ ruby --version
ruby 1.8.7 (2009-04-08 patchlevel 160) [amd64-freebsd7]
e$B$H$J$C$F$$$^$9!#e(B

i386e$B$G$9$,!"<j85$G$OF0$$$F$$$k$h$&$K8+$($^$9!#e(B
e$B!Je(Btest.rbe$B$NCf?H$,$o$+$i$J$$$N$G;n$7$+$?$,0c$&$H;W$$$^$9$,!#!Ke(B

% ruby -v
ruby 1.8.7 (2009-04-08 patchlevel 160) [i386-freebsd7]

$ ruby test.rb
0.97
/libexec/ld-elf.so.1: /usr/local/lib/ruby/site_ruby/1.8/amd64-freebsd7/MeCab.so: Undefined symbol “_ZN5MeCab12createTaggerEPKc”

e$B$N$h$&$K!“%@%$%J%%C%/%j%s%/$K<:GT$7$^$9!#e(BLD_LIBRARY_PATH=/usr/local/lib e$B$re(B
e$BIU$1$F$
$^$7$?$,JQ2=$”$j$^$;$s$G$7$?!#e(B

e$B$3$N7k2L$O$I$&$J$j$^$9$+!)e(B

% strings /usr/local/lib/ruby/site_ruby/1.8/amd64-freebsd7/MeCab.so |
grep _ZN5MeCab
% strings /usr/local/lib/libmecab.so.1 | grep _ZN5MeCab12
% mecab-config --version

test.rb e$B$Oe(B ruby-mecab e$B$NG[I[J*$NCf$Ne(B test.rb e$B$G$9e(B

e$B$3$N7k2L$O$I$&$J$j$^$9$+!)e(B

% strings /usr/local/lib/ruby/site_ruby/1.8/amd64-freebsd7/MeCab.so | grep _ZN5MeCab
% strings /usr/local/lib/libmecab.so.1 | grep _ZN5MeCab12
% mecab-config --version

$ strings /usr/local/lib/ruby/site_ruby/1.8/amd64-freebsd7/MeCab.so |
grep _ZN5MeCab
_ZN5MeCab6Tagger6createEiPPc
_ZN5MeCab6Tagger6createEPKc
_ZN5MeCab12createTaggerEPKc
_ZN5MeCab14getTaggerErrorEv
_ZN5MeCab6Tagger7versionEv

$ strings /usr/local/lib/libmecab.so.1 | grep _ZN5MeCab12
_ZN5MeCab12progress_barEPKcmm
_ZN5MeCab12CharPropertyD0Ev
_ZN5MeCab12CharProperty5closeEv
_ZN5MeCab12CharPropertyD1Ev
_ZN5MeCab12FeatureIndexD0Ev
_ZN5MeCab12StringBufferD1Ev
_ZN5MeCab12FeatureIndexD1Ev
_ZN5MeCab12FeatureIndexD2Ev
_ZN5MeCab12FeatureIndex19buildUnigramFeatureEP20mecab_learner_path_tPKc
_ZN5MeCab12FeatureIndex8calcCostEP20mecab_learner_node_t
ZN5MeCab12FeatureIndex18buildBigramFeatureEP20mecab_learner_path_tPKcS4
_ZN5MeCab12FeatureIndex8calcCostEP20mecab_learner_path_t
_ZN5MeCab12CharProperty4openERKNS_5ParamE
_ZN5MeCab12CharProperty11set_charsetEPKc
ZN5MeCab12CharProperty7compileEPKcS2_S2
_ZN5MeCab12StringBuffer5writeEPKcm
_ZN5MeCab12StringBuffer5writeEc
_ZN5MeCab12StringBuffer5writeEPKc
_ZN5MeCab12StringBufferD0Ev
_ZN5MeCab12StringBufferD2Ev
_ZN5MeCab12StringBuffer7reserveEm
_ZN5MeCab12scoped_arrayIN5Darts15DoubleArrayImplIchijNS1_6LengthIcEEE16result_pair_typeEED0Ev
_ZN5MeCab12scoped_arrayIN5Darts15DoubleArrayImplIchijNS1_6LengthIcEEE16result_pair_typeEED1Ev
_ZN5MeCab12scoped_arrayIcED0Ev
_ZN5MeCab12scoped_arrayIcED1Ev
_ZN5MeCab12CharProperty4openEPKc
_ZN5MeCab12createTaggerEPKc
_ZN5MeCab12createTaggerEiPPc
_ZN5MeCab12FeatureIndex9set_alphaEPKd
_ZN5MeCab12FeatureIndex6strdupEPKc
_ZN5MeCab12FeatureIndex8getIndexEPPcS2_m
_ZN5MeCab12FeatureIndex12openTemplateERKNS_5ParamE

$ mecab-config --version
0.97

e$B$;$$$1$G$9!#e(B

e$B4D6-$b0c$$$^$9$7!“$H$j$”$($:>pJs$@$1$NDs6!$G$9!#e(B

FreeBSD i386e$B$G:#F|e(BMeCabe$B4X78$O%$%s%9!<%k$7$?$N$G$9$,!"e(B
e$BF0$$$F$$$k$h$&$G$9!#e(Bamd64e$B$NLdBj$G$7$g$&$+!)e(B

e$B%$%s%9%H!<%k$7$?e(Bportse$B$O0J2<$G$9!#e(B
ja-mecab-0.97
ja-mecab-ipadic-2.7.0.20070801
ja-ruby18-mecab-0.97

uname -a

FreeBSD rx.seike.org 7.2-STABLE FreeBSD 7.2-STABLE #0: Sun Jul 5
02:58:46 JST 2009<e$B>JN,e(B>

ruby -v

ruby 1.8.7 (2008-08-11 patchlevel 72) [i386-freebsd7]

nm /usr/local/lib/libmecab.so.1|grep _ZN5MeCab12create

0004f020 T _ZN5MeCab12createTaggerEPKc
0004f390 T _ZN5MeCab12createTaggerEiPPc

nm /usr/local/lib/ruby/site_ruby/1.8/i386-freebsd7/MeCab.so |grep

_ZN5MeCab12create
U _ZN5MeCab12createTaggerEPKc

ldd /usr/local/lib/ruby/site_ruby/1.8/i386-freebsd7/MeCab.so

/usr/local/lib/ruby/site_ruby/1.8/i386-freebsd7/MeCab.so:
libruby18.so.18 => /usr/local/lib/libruby18.so.18 (0x28300000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x283db000)
libmecab.so.1 => /usr/local/lib/libmecab.so.1 (0x284d0000)
libcrypt.so.4 => /lib/libcrypt.so.4 (0x28199000)
libm.so.5 => /lib/libm.so.5 (0x281b2000)
libc.so.7 => /lib/libc.so.7 (0x28089000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x281c7000)
libthr.so.3 => /lib/libthr.so.3 (0x281d2000)
libiconv.so.3 => /usr/local/lib/libiconv.so.3 (0x28613000)

ldd /usr/local/lib/libmecab.so.1

/usr/local/lib/libmecab.so.1:
libiconv.so.3 => /usr/local/lib/libiconv.so.3 (0x28443000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x28538000)
libm.so.5 => /lib/libm.so.5 (0x2818c000)
libc.so.7 => /lib/libc.so.7 (0x28089000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x281a1000)

ruby /usr/local/share/examples/ruby18/mecab/test.rb

0.97

filename: /usr/local/lib/mecab/dic/ipadic/sys.dic
charset: euc-jp
size: 392126
type: 0
lsize: 1316
rsize: 1316
version: 102

At Sat, 4 Jul 2009 20:26:51 +0900,

e$B$-$7$b$H$G$9e(B

ports
e$B$Ne(B6e$B7ne(B19e$BF|$NJQ990J9_$G%@%a$K$J$C$F$$$k$3$H$,$o$+$j$^$7$?!#e(B

e$BDI$$$+$1$F$_$?7k2L!"e(B

6e$B7ne(B19e$BF|$Ne(B ports/lang/ruby18/Makefile e$B$NJQ99"-$Ge(B
http://www.freebsd.org/cgi/cvsweb.cgi/ports/lang/ruby18/Makefile.diff?r1=1.142;r2=1.143;f=h

LDFLAGS+= ${PTHREAD_LIBS}

e$B$,:o$i$l$F$$$k$3$H!J:G?7HG$K$3$N9T$rDI2C$9$l$PF0$/!K$He(B

http://www.freebsd.org/cgi/cvsweb.cgi/ports/lang/ruby18/files/patch-configure.in?annotate=1.1

e$B$3$N%Q%C%A$K$h$j!"e(BMakefile e$BCf$Ge(B -lpthread e$B$,e(B LIBS
e$B$G$O$J$/e(B MAINLIBS e$B$Ke(B
e$B@_Dj$5$l$k$h$&$K$J$C$F$$$k$3$H!J$=$&$J$i$J$$$h$&$K%Q%C%A$r=$@5$9$k$HF0$/!Ke(B

e$B0J>e!J$N$I$A$i$+!&N>J}!K$,860x$G$"$k$H3NG’$7$^$7$?!#e(B
ruby e$B$NLdBj$H$$$&$h$j$O!"e(Bports e$B$NLdBj$G$9$N$G!"e(Bruby-dev
e$B$X$NJs9p$O!"e(B
e$BFC$K2?$+$J$1$l$P$3$l$G:G8e$K$7$?$$$H;W$$$^$9!#e(B

e$B$-$7$b$H$G$9e(B

mkmf.log e$B$r8+$?$H$3$m!"$3$s$J46$8$G$7$?!#e(B

have_library: checking for main() in -lmecab… -------------------- no

"cc -o conftest -I. -I/usr/local/lib/ruby/1.8/amd64-freebsd7 -I. -O2
-fno-strict-aliasing -pipe -fPIC conftest.c -L. -L/usr/local/lib
-Wl,-R/usr/local/lib -L. -rdynamic -lruby18-static -lmecab -lrt
-lcrypt -lm -rpath=/usr/lib:/usr/local/lib "
/usr/local/lib/libmecab.so: undefined reference to `pthread_create’
checked program was:
/* begin /
1: /top/
2: int main() { return 0; }
3: int t() { void ((volatile p)()); p = (void (()()))main; return 0; }
/
end */

"cc -o conftest -I. -I/usr/local/lib/ruby/1.8/amd64-freebsd7 -I. -O2
-fno-strict-aliasing -pipe -fPIC conftest.c -L. -L/usr/local/lib
-Wl,-R/usr/local/lib -L. -rdynamic -lruby18-static -lmecab -lrt
-lcrypt -lm -rpath=/usr/lib:/usr/local/lib "
/usr/local/lib/libmecab.so: undefined reference to `pthread_create’
checked program was:
/* begin /
1: /top/
2: int main() { return 0; }
3: int t() { main(); return 0; }
/
end */

libmecab e$B$Ne(B pthread_create
e$B$,2r7h$G$-$J$$$N$,860x$N$h$&$G$9!#e(B
trunk e$B$+$iF~$l$F$"$k!“e(Bruby19
e$B$G$O$&$^$/$$$/$N$G!”$=$l$H$*$b$o$l$ke(B
e$BAj0cE@$r$5$,$7$?$H$3$m!“e(B-lthr
e$B$,%3%^%s%I%i%$%s$K$”$k$+$I$&$+$N:9$G$7$?!#e(B

extconf.rb e$B$Ke(B

$LIBS = '-lthr ’ + $LIBS

e$B$H$$$&9T$rDI2C$7$F$_$?$H$3$m!"$&$^$/F0$/$h$&$K$J$j$^$7$?!#e(B
e$B$J$<;d$N4D6-$G$@$15/$-$F$$$k$N$+Ff$G$9$,e(B…