Per*_*ner 6 java-native-interface java-9
当我的(C)程序嵌入 Java 9 时,我试图找出要传递给链接器的文件的标准化位置。libjvm.so即(Linux/Solaris) 和libjvm.dylib(macOS)的“正确”路径。这样我的构建脚本等才能在未来安全。
Java 9 更改了 Java 安装的布局 ( JEP 220 ),以便使文件布局标准化,但我看到的所有文档都没有正确libjvm描述Linux 上 Java 9 的 Oracle 和 OpenJDK 版本中共享库的位置和macOS。
那么,有更新的权威文档吗?
JEP 220(声称已“交付”,作为JSR 376 的一部分:JavaTM 平台模块系统,它是 Java 9 的一部分)说:
Linux、macOS 和 Solaris 上的 lib 目录包含运行时系统的动态链接本机库,就像现在一样。这些名为 libjvm.so 或 libjvm.dylib 的文件可以通过嵌入运行时系统的程序进行链接。
(类似的描述在几个相关的错误跟踪器问题和网络上重复出现。)
但该描述并未描述当前(最终)版本。相反,他们似乎都将动态库放在lib/server/,而不是lib/.
(OpenJDK,至少在 Ubuntu 上,与JEP 220中描述的布局有额外的偏差。)
请注意,我只对链接完整的 JDK 安装感兴趣,例如从 Oracle 或 OpenJDK 获取的安装。我不会构建自己的安装,也不会随我的应用程序分发 java 运行时库的副本。
| 归档时间: |
|
| 查看次数: |
3846 次 |
| 最近记录: |