【问题标题】:Where would one put a JNI module in Linux or OS X将 JNI 模块放在 Linux 或 OS X 的什么位置?
【发布时间】:2016-03-25 07:04:39
【问题描述】:

Java 应用程序具有要使用的 JNI 模块。

用户(或此应用程序的安装脚本)应将 JNI 模块放在 Linux (Ubuntu) 或 MacOS X 上的什么位置,以便在无需在代码中指定模块路径的情况下加载此 JNI 模块?

【问题讨论】:

    标签: java linux macos java-native-interface


    【解决方案1】:

    这是指向共享对象detailed explanation 的链接以及操作系统如何搜索它们。

    我希望 Java 人停止使用 LD_LIBRARY_PATH 并开始使用现有的目录结构和 ld.so.conf 机制。甚至 OpenJDK 库也被转储在一个不在标准路径上的地方,而且它们也没有添加 ld.so.conf 文件(这有多难?)。

    这种方法无需设置您自己的 LD_LIBRARY_PATH 并通过 shell 脚本启动。

    如果要安装所需的共享对象,首先测试/usr/local/lib 之类的位置作为系统范围内的安装选择,如果它存在并且现有文件尚未使用您的文件名,则将您的库放在那里。更系统的方法是检查所有 ld.so.conf 文件并查看是否有任何目录与您知道可以使用的内容匹配。 shell 脚本可以在安装时执行此操作。

    【讨论】:

      【解决方案2】:

      将已编译的库(Linux 上的 .so 文件或 MacOS 上的 .dylib)放入您选择的目录中,并将该目录包含在用于启动 JVM 的库搜索路径 LD_LIBRARY_PATH 中。

      【讨论】:

      • 请注意 OS X 对共享库有不同的命名约定。您在 OS X 中没有“so”文件。有“dylib”文件。
      • 谢谢@mko,我已经根据你的建议更新了我的答案。
      猜你喜欢
      • 2014-09-22
      • 2012-11-12
      • 2016-09-21
      • 2010-09-24
      • 2012-07-22
      • 1970-01-01
      • 2011-08-05
      • 1970-01-01
      • 2013-12-26
      相关资源
      最近更新 更多