使用Java 1.4和Suse 9的32位和64位共享库行为

时间:2012-03-15 19:45:19

标签: java linux suse

首先,对于你们所有人来说,这可能是一个非常棒的问题。但正如他们所说,如果你不问,你如何学习?

所以,这就是事情:

我们已经开发了这个.JAR文件,可以在Java 1.4下工作,并安装在SUSE 9 Enterprise Server中。

我们还在不同的平台上进行了测试: - Suse 9 Enterprise Server 32位+ JDK 1.4.2_08 + LIBSTDC ++。SO.6: 运行顺利,没有错误返回。

  • Red Hat 5.5 Server 64位+ JDK 1.4: 运行顺利,没有错误返回。

  • Suse 9 Enterprise Server 64位+ JDK 1.4.2_08(32位)+ LIBSTDC ++。SO.6: 如果我使用程序的 32 位库,则返回错误说: “线程中的异常”主“java.lang.UnsatisfiedLinkError:/usr/lib/MySharedLibrary.so:/usr/lib/MySharedLibrary.so:undefined symbol:NFQuality”

但是,如果我使用程序的 64 位库,则会返回此错误: “线程中的异常”主“java.lang.UnsatisfiedLinkError:/usr/lib64/MySharedLibrary64.so:/usr/lib64/MySharedLibrary64.so:无法打开共享对象文件:没有这样的文件或目录

我尝试过给java -Djava.library.path命令以及MySharedLibrary所在的路径,但它没有用。

我的问题是:

为什么它会在Suse 9 64位中返回错误,如果它与Suse 9 32位具有完全相同的配置?

我知道架构之间存在差异,好吧。但它不是架构编译问题,因为在RedHat 5.5中它有64位运行。

任何人都可以指导我完成这个难题吗?我可能的解决方案是什么?

谢谢你们所有的大师们。

1 个答案:

答案 0 :(得分:0)

您无法从32位JVM链接64位库。如果要链接64位库,请使用64位java。

至于未定义的符号。你可能有一个断开的链接,因为suse缺少一些存在于redhat上的库。我不相信在不了解MySharedLibrary.so的情况下可以回答这个问题。