在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吗?
P.S 在我们测试过的大多数UNIX平台上,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吗?
P.S 在我们测试过的大多数UNIX平台上,System.loadLibrary("m")都能正常工作。
.a
库需要编译到程序中。在 JVM 的情况下,当你构建 JVM 时。 - Peter Lawrey