System.loadLibrary UnsatisfiedLinkError ELF文件数据编码不是little-endian

时间:2011-11-16 10:08:23

标签: java gcc java-native-interface endianness

我一直在关注JNI教程:

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

我的C库已成功构建,但我在使用它时遇到了问题。

当我在OpenSuse11上运行Eclipse中的Java程序时,出现以下错误:

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)

我已经尝试重建库在gcc中强制使用“-mlittle-endian”,但这会失败,因为它使用的其他库显然是big-endian。

我可以强制java使用big-endian,因为机器的其余部分似乎是?任何想法,为什么我得到这种不匹配,因为我虽然JVM一般是大端?

感谢您的帮助!

更新23/11/2011:

gcc显然正在编译big-endian,它与所包含的库相匹配但是我很困惑为什么Java调用System.loadLibrary期待little-endian因为这与系统的其余部分相反...

我假设这是因为Java将在JVM中运行但是从我读过的内容我认为这将默认为big-endian ......?

我有什么想法可以改变我的Java期望?

0 个答案:

没有答案