起初,这个错误对我来说看起来很正常,但在尝试了所有已知的事情之后,我仍然无法运行我的程序。所以请让我详细解释一下。
我正在尝试在 Ubuntu 上使用 TC 的 java api 运行 TC(TokyoCabinet) 示例。TC 和 Tc-java 都已正确构建并安装在我的主目录中。(不是 /usr/local/lib)。
我正在运行程序,例如-
$ java -Djava.library.path=/home/siddharth/tools/tc-java/lib -classpath ./bin/:lib/tokyocabinet.jar HdbTest
并得到以下错误 -
Exception in thread "main" java.lang.UnsatisfiedLinkError: /home/siddharth/tools/tc-java/lib/libjtokyocabinet.so.1.1.0: /home/siddharth/tools/tc-java/lib/libjtokyocabinet.so.1.1.0: undefined symbol: tcversion
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1751)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1676)
at java.lang.Runtime.loadLibrary0(Runtime.java:822)
at java.lang.System.loadLibrary(System.java:993)
at tokyocabinet.Loader.load(Loader.java:41)
at tokyocabinet.HDB.<clinit>(HDB.java:37)
at HdbTest.main(HdbTest.java:10)
现在,此错误与符号“tcversion”有关。于是我跑了——
$ nm /home/siddharth/tools/tc-java/lib/libjtokyocabinet.so.1.1.0 | grep -i tcversion
U tcversion
这意味着 tcversion 不存在。
实际上 tcversion 在主 TC 库中
$ nm /home/siddharth/tools/tc/lib/libtokyocabinet.so | grep -i tcversion
0008096c D tcversion
现在,问题是,我怎样才能让这些库连接起来?