我应该如何在linux中获得特定于平台的jni头来进行交叉构建?

yzuktlbb  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(289)

我是jni环境的新手,我想使用docker交叉编译共享库构建,这样jar就可以从任何平台轻松打包,并且可以包含所需的共享库。
我曾尝试通过cmake和介子构建系统来完成更多的工作,但都没有成功,所以我转向docker,幸运的是我找到了一个repo(dockcross),它为交叉编译c/c++工具链提供了预构建的图像。
因为工具链是针对windows的,所以当我使用工具链编译时,平台相关的代码(比如 long 它是32位的(在windows中)应该通过交叉编译器编译和链接和平台依赖库将构建良好。
所以,我只需要jni头来构建。问题是我无法在linux环境下安装windowsjdk,因此无法获取头文件( jdk/include/win32 ).
如何获取生成的头文件?

vi4fp9gy

vi4fp9gy1#

在github存储库中找到openjdk头。
尽管在jdk安装中没有正确地安排这些路径,但是对这些路径进行硬编码还是值得的,或者使用一个简单的bash/python脚本:)
希望对你有帮助。因为它没有被书写或指导使用。许多博客文章只是下载所有三个操作系统的整个jdk,然后把它们放在repo上,这可能不是最好的主意,因为这些头文件被授权为gpl2,任何拥有非gpl2许可证的操作系统(比如mit)都可能会因为不做这类事情而受苦。
但是好吧,我们找到了它,所以我们可以远程使用它们作为对任何oss项目的依赖!

相关问题