【问题标题】:Converting a .so file to a .jnilib file将 .so 文件转换为 .jnilib 文件
【发布时间】:2009-09-30 06:14:55
【问题描述】:

我有一个以 ELF 格式为 Linux 编译的 .so 库,Java 程序正在使用该库。我正在尝试将此应用程序移植到 Mac OS X,并发现 OS X 对这些文件使用不同的扩展名,.jnilib。我已经想出了如何设置PATH 以便它正确地找到文件。但是,OS X Java 无法加载 .so 文件(因为它需要其他扩展名)。

如果我将文件扩展名从.so 更改为.jnilib,JVM 可以找到文件但无法读取它们(因为它们已被错误编译)。

在 Linux 系统或 Mac OS X 中,没有源代码,有什么方法可以将这些 .so 文件转换为 .jnilib?我怀疑这是不可能的,但 Stack Overflow 还没有让我失望——而且我不会把“这不可能”算作失败。

【问题讨论】:

    标签: java linux macos java-native-interface elf


    【解决方案1】:

    您是否尝试在 Mac OS X 上为 Linux 使用本机库?不,那是行不通的。

    如果还没有该后缀,您需要获取 Mac 版本的本地库并将其重命名为 jnilib。

    这是 JVM 字节码和本机代码之间的主要区别。本机代码非常特定于平台。我们甚至为不同的 linux 风格提供了多个版本的 JNI 库。

    由于 Mac 和 Linux 都使用相同的 CPU,并且它们都是基于 Unix 的,我不会说这是不可能的,即使它非常接近。

    【讨论】:

    • 这就是我害怕的。在回答您的第一个问题时,是的,这就是我想做的,不幸的是,我无法获得本机库的 Mac 版本 - 制造它的公司没有可用的 Mac 版本。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多