Сначала эта ошибка выглядела нормально для меня, но после того, как я попробовал все известные вещи, мне все еще не повезло с запуском моей программы.Поэтому, пожалуйста, позвольте мне объяснить подробнее.
Я пытаюсь запустить пример TC (TokyoCabinet), используя java api TC на Ubuntu.И 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
Теперь вопрос в том, как можноЯ заставляю эти библиотеки подключаться?