linux上64位体系结构的JNI库名称
JNI library name for 64 bit architecture on linux
我为java桌面开发了一个JNI动态库。目前,它可以在MacOS和Windows上运行,但在Linux上我有一个奇怪的行为。
我已经为32位和64位编译了库,但当我只放入64位库并调用System.loadLibrary (myLibrary);
时,它找不到它,但在32位架构中,当我只添加32位时,它能找到它(我将其命名为libMyLibrary.so)
所以我的问题是,对于32位,我需要像libMyLibrary.so
一样命名它,但它应该如何命名为64位架构?我应该写一些代码,根据体系结构加载适当的库吗?
谢谢!
标准解决方案是将32位和64位版本(以及其他体系结构)放在不同的目录中,并确保java.library.path指向正确的目录。
我有安装了两个JVM的Ubuntu 64位操作系统。一种是64位
$ java -version
java version "1.8.0_25"
Java(TM) SE Runtime Environment (build 1.8.0_25-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode)
另一个是32位
$ /opt/jdk1.7.0_72/bin/java -version
java version "1.7.0_72"
Java(TM) SE Runtime Environment (build 1.7.0_72-b14)
Java HotSpot(TM) Server VM (build 24.72-b04, mixed mode)
我使用以下代码为在不同JVM中运行的应用程序加载库。
static {
if (System.getProperty("os.name").equals("Linux")) {
if (System.getProperty("os.arch").equals("i386")) {
System.out.println("loading i386 library");
} else if (System.getProperty("os.arch").equals("amd64")) {
System.out.println("loading x86_64 library");
}
}
}
相关文章:
- 将应用程序从32位移植到64位时出现问题
- 64位机器上的C++内存对齐
- qmake:检测目标位宽(32 位或 64 位)
- 如何在 64 位 vb.net Windows 应用程序中引用 32 位 dll
- Qt 5.11.2 (Clang 8.0 (Apple), 64 位), 找不到 QJSEngine 文件
- 在 64 位边界上对齐C++结构数组?
- 如何为字符串生成唯一但一致的 N 位哈希(小于 64 位)?
- 在 64 位的 c++ 中运行 mstest 测试
- 在两个线程上读/写 64 位,无互斥/锁定/原子
- 浮点数为 32 位和 64 位二进制表示形式
- 是否有 64 位等效于 GetLastInputInfo / LASTINPUTINFO?
- 所有可能的链接生成器与64位密钥
- WinAPI C++如何从 64 位应用程序加载资源
- 在 c++ 中输出 64 位整数
- 使用192/256位整数求和无符号64位整数向量的点积的最快方法
- 如何在 64 位平台上计算 32 位哈希C++?
- 使用 SysNative 在 Visual Studio 中创建 64 位应用程序
- 在Java(JNI)中与Mingw C 一起编译64位静态LIB
- linux上64位体系结构的JNI库名称
- 从java到c++jni android arm64-v8a 32/64位的传递mat问题