gpt4 book ai didi

Java System.loadLibrary ("m") 在 AIX 6.1 上失败

转载 作者:搜寻专家 更新时间:2023-11-01 03:55:19 25 4
gpt4 key购买 nike

在 AIX 6.1 ppc64 上,为了加载 libm.a,我们的应用程序使用 System.loadLibrary("m")。或者失败并显示错误消息

the module has invalid magic number

根据 IBM 文档,当 32 位和 64 位二进制文​​件不匹配时,就会发生这种情况。或者无论我们使用 Java6(32 位)还是 Java6_64(64 位)JVM,都会发生这种情况。所以事实并非如此。

另一个可能的原因是 /usr/lib/libm.a 不是共享库。但是我们就是找不到平台上的共享模式libm.a来使用!

根据 Javadoc,在 System.loadLibrary("name") 中,“name”到真实库的映射是系统相关的。在大多数 Unix 系统上,它映射到 lib.so,而在 AIX 上,它映射到 lib.a;请注意,在 AIX 上,.a 可以是混合的,即。它可以包含静态对象和共享对象,32 位和 64 位对象。我的问题是在 AIX 上找到共享模式 libm.a。

有人知道如何使用 System.loadLibrary("m") 加载 libm.a 吗?

附言System.loadLibrary("m") 在我们测试过的大多数 UNIX 平台上运行良好。

最佳答案

您可以使用“dump -H”(AIX 等同于 ldd)来验证 libm.a 是一个共享库。 'file' 命令应该区分 32 位和 64 位库,但 AIX 还支持在一个库中混合 32 位和 64 位。如果文件看起来没问题,请检查您的应用是否正在使用“truss”加载正确的 libm。

关于Java System.loadLibrary ("m") 在 AIX 6.1 上失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8961441/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com