У меня проблемы с загрузкой двух библиотек, где одна зависит от другой в Linux.Допустим, у меня есть 2 libs, libA.so и libB.so, libB.so зависит от libA.so (вызывая из него функции).
Мне нужно загрузить libB.so из Java через JNI и вызвать нескольконативные методы из него.
Итак, я пытаюсь сделать следующее:
static {
System.loadLibrary(A);
System.loadLibrary(B);
}
(обе библиотеки находятся в java.library.path).
Под Win32, он работает нормально - B.dll видит, что A.dll уже загружен, и не пытается загрузить его сам (с помощью поиска PATH).
В то время как в Linux он не работает.Дополнительная регистрация показывает, что System.loadLibrary (A);выполняется правильно, и libA.so загружается нормально, тогда, когда мы пытаемся загрузить B, он ищет библиотеку libA.so в LD_LIBRARY_PATH, и она завершается неудачно (обе библиотеки находятся в java.library.path, но НЕ вLD_LIBRARY_PATH).
У кого-нибудь почему это происходит?Связано ли это с тем, как работает связывание во время выполнения Linux?
Я вижу много способов обойти это, но сначала хочу понять суть этого.
Спасибо, Михаил