System.loadLibrary UnsatisfiedLinkError ELF-кодировка данных файла не в порядке байтов - PullRequest
1 голос
/ 16 ноября 2011

Я следую учебному пособию по JNI:

http://java.sun.com/developer/onlineTraining/Programming/JDCBook/jniexamp.html

и моя библиотека C успешно создана, но у меня возникают проблемы с ее использованием.

Когда я запускаю свою программу Java в Eclipse на OpenSuse11, я получаю следующую ошибку:

Exception in thread "main" java.lang.UnsatisfiedLinkError: /usr/lib/libfpdpReaderLib.so: /usr/lib/libfpdpReaderLib.so: ELF file data encoding not little-endian (Possible cause: endian mismatch)

Я попытался пересобрать библиотеку, заставив "-mlittle-endian" в gcc, но это не удалось, так как другие библиотеки, которые она использует, явно с прямым порядком байтов.

Могу ли я заставить java использовать big-endian, как кажется на остальной части машины? Какие-нибудь идеи, почему я получаю это несоответствие, поскольку я думал, что JVM в целом был байтовым?

Спасибо за любую помощь!

Обновление 23/11/2011:

gcc явно компилирует big-endian, который совпадает с включенными библиотеками, но я запутался, почему Java-вызов System.loadLibrary ожидает little-endian, поскольку это идет против остальной системы ...

Я предполагаю, что это потому, что Java будет работать в JVM, но из того, что я прочитал, я подумал, что по умолчанию это будет big-endian ...?

Есть идеи, как я могу изменить то, что ожидает моя Java?

...