我应该如何在 linux 中为 cross-build 获取特定于平台的 jni headers?
How should I get platform specific jni headers in linux for cross-build?
我是 Jni 环境的新手,我想使用 docker 交叉编译共享库构建,以便可以从任何平台轻松打包 Jar 并包含所需的共享库。
我通过 CMake 和 Meson 构建系统进行了更多尝试,但从未成功,所以我转向 docker,幸运的是我找到了一个提供预构建图像的 repo (dockcross)交叉编译 C/C++ 工具链。
由于工具链是针对 windows 的,因此使用该工具链编译时我不会有任何问题,platform-dependent 代码(例如 long
在 windows 中是 32 位) 应该通过 cross-compiler 编译和链接,并且平台相关的库将正常构建。
所以,我只需要 Jni headers 来构建。问题是我无法在 Linux 环境中安装 Windows JDK,所以我无法获取 header 文件 (jdk/include/win32
)。
我该如何继续获取构建的 header 文件?
找到 OpenJDK headers in the github repository。
虽然在 JDK 安装中没有正确安排,但值得对这些路径进行硬编码或使用简单的 bash/python 脚本 :)
希望对您有所帮助。由于它无处可写或指导使用。许多博客文章只是下载提取所有三个 OS 的整个 jdk,然后将它们放在他们的仓库中,这可能不是最好的主意,因为那些 headers 被许可为 GPL2 和任何拥有非 GPL2 许可证的 OSS(如麻省理工学院)可能会因为不做这些事情而受到影响。
但是好吧,我们找到了它,所以我们可以远程使用它们作为对任何 OSS 个项目的依赖!
我是 Jni 环境的新手,我想使用 docker 交叉编译共享库构建,以便可以从任何平台轻松打包 Jar 并包含所需的共享库。
我通过 CMake 和 Meson 构建系统进行了更多尝试,但从未成功,所以我转向 docker,幸运的是我找到了一个提供预构建图像的 repo (dockcross)交叉编译 C/C++ 工具链。
由于工具链是针对 windows 的,因此使用该工具链编译时我不会有任何问题,platform-dependent 代码(例如 long
在 windows 中是 32 位) 应该通过 cross-compiler 编译和链接,并且平台相关的库将正常构建。
所以,我只需要 Jni headers 来构建。问题是我无法在 Linux 环境中安装 Windows JDK,所以我无法获取 header 文件 (jdk/include/win32
)。
我该如何继续获取构建的 header 文件?
找到 OpenJDK headers in the github repository。
虽然在 JDK 安装中没有正确安排,但值得对这些路径进行硬编码或使用简单的 bash/python 脚本 :)
希望对您有所帮助。由于它无处可写或指导使用。许多博客文章只是下载提取所有三个 OS 的整个 jdk,然后将它们放在他们的仓库中,这可能不是最好的主意,因为那些 headers 被许可为 GPL2 和任何拥有非 GPL2 许可证的 OSS(如麻省理工学院)可能会因为不做这些事情而受到影响。
但是好吧,我们找到了它,所以我们可以远程使用它们作为对任何 OSS 个项目的依赖!