Kyoto CabinetのJavaバインディングにハマる

バイナリインストールでもいいんですけどね.
慣れてないものは,ソースから入れると色々知らないことが分かっていいので,最初はソースで入れることにしています.

> wget http://fallabs.com/kyotocabinet/javapkg/kyotocabinet-java-1.21.tar.gz
> tar xvf kyotocabinet-java-1.21.tar.gz
> cd kyotocabinet-java-1.21
> setenv JAVA_HOME /usr/local/jdk1.6.0_20
> ./configure --prefix=/usr/local --with-kc=/usr/local
> make
> su
# make install
# exit
> make check
make DBNAME=":" RNUM="10000" check-each
make[1]: Entering directory `/home/hoge/kyotocabinet-java-1.21'
rm -rf casket*
LD_LIBRARY_PATH=.:/lib:/usr/lib:/usr/local/lib:/usr/local/lib /usr/local/jdk1.6.0_20/bin/java -cp kyotocabinet.jar -Djava.library.path=.:/usr/local/lib kyotocabinet.Test order \
          ":" "10000"
Exception in thread "main" java.lang.UnsatisfiedLinkError: /home/hoge/kyotocabinet-java-1.21/libjkyotocabinet.so.1.1.0: /home/hoge/kyotocabinet-java-1.21/libjkyotocabinet.so.1.1.0: undefined symbol: _ZTIN12kyotocabinet6ThreadE
        at java.lang.ClassLoader$NativeLibrary.load(Native Method)
        at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1803)
        at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1728)
        at java.lang.Runtime.loadLibrary0(Runtime.java:823)
        at java.lang.System.loadLibrary(System.java:1028)
        at kyotocabinet.Loader.load(Loader.java:35)
        at kyotocabinet.Utility.<clinit>(Utility.java:31)
        at kyotocabinet.Test.runorder(Test.java:115)
        at kyotocabinet.Test.main(Test.java:35)
make[1]: *** [check-each] Error 1
make[1]: Leaving directory `/home/hoge/kyotocabinet-java-1.21'
make: *** [check] Error 2

あり?
これ,アレですね.Kyotocabinet6Thread...つまりlibkyotocabinet.soが見えてませんね.
なので,libjkyotocabinet.soを作るMakefileに,libkyotocabinet.soをリンクするように修正しました.
/home/hoge/kyotocabinet-java-1.21/Makefileに,次のような変更を加えただけです.

LIBS = -lz -lstdc++ -lrt -lpthread -lm -lcLIBS = -lz -lstdc++ -lrt -lpthread -lm -lc -lkyotocabinet

そして

> make clean;make
> su
# make install
# exit
> make check
(中略)
#================================================================
# Checking completed.
#================================================================
>

OKです.