起初,這個錯誤看起來很正常,但在嘗試了所有已知的事情之後,我仍然沒有運行我的程序。所以請讓我詳細解釋一下。java.lang.UnsatisfiedLinkError - 加載多個lib文件?
我想在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
內現在的問題是,如何才能讓這些庫連接?
與LDD首先要經常檢查,因爲它給你「libfoo.so =>未找到」快速眼球檢查 – kittylyst 2014-12-28 15:27:43