2

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

所以,事情是这样的:

我们开发了这个 .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 bits + 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:未定义符号:NFQuality”

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

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

我的问题是:

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

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

谁能指导我解决这个难题?我可能的解决方案是什么?

谢谢你们所有的大师。

4

1 回答 1

0

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

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

于 2012-03-15T21:57:23.687 回答