在 OSGi 包中注册本机库时,您可以使用Bundle-NativeCode
标头:
libjnotify.so;osname = Linux;processor = x86
如果 Java VM 在 x86 Linux 环境中执行,这将使该libjnotify.so
库可用。
OSGi 网站上列出了可能的处理器架构。但是,这不包括新的操作系统或处理器架构。此外,它不包括仅靠处理器架构还不够的环境。
对于后一种情况的示例,请考虑 ARM 环境。OSGi 为我们提供了 ARM_le 和 ARM_be,但我的理解是这还不够。不同版本的 ARM 架构(ARMv6、ARMv7 等),无论字节顺序如何,都不是二进制兼容的。此外,带有 FPU 的 ARM 架构可以运行使用“软浮点”(armel) 或“硬浮点”(armhf) ABI 的操作系统。为硬浮点编译的库不能在软浮点系统上运行,反之亦然。
那么在这些比较复杂的环境中,原生代码应该如何加载呢?