我有一个使用本地库 libclient.so 的应用程序。这取决于另一个 .so 文件。
我尝试在 linux 32 位系统上使用命令行设置 LD_LIBRARY_PATH:
export LD_LIBRARY_PATH=/home/usb:${LD_LIBRARY_PATH}
它将路径设置为:
tushar@tushar-desktop:~$ echo $LD_LIBRARY_PATH
/home/usb:/home/tushar/workspace/MinutiaeApp/resources:
但是当我尝试运行我的代码时,我在 LD_LIBRARY_PATH 中得到空值,我认为因此我得到了不满意的链接错误。
这是我的测试代码:
String lib = "libclient.so";
String ld_lib_path = System.getenv("LD_LIBRARY_PATH");
System.out.println("***LD_LIBRARY_PATH ***"+ ld_lib_path); // **GIVING NULL**
String[] paths = ld_lib_path.split(":");
for(int i=0; i<paths.length; i++) {
String p = paths[i];
File x = new File(p, lib);
System.out.println("***Path name *****" + i + " : "+ x.getAbsolutePath());
if (x.exists()) {
System.out.println("Exist");
System.load(x.getAbsolutePath());
break;
}
}
实际代码:
System.load("/home/usb/libclient.so"); // **HERE I am getting Unsatisfied Link Error**
更新: 我已经在 VM 参数中设置了 LD_LIBRARY_PATH,并且在我的 java 代码中运行以下行时获得了路径名。这样路径就设置好了。
String ld = System.getProperty("LD_LIBRARY_PATH");
现在的问题是,当我尝试使用加载 libgrfingerjava.so 时,System.load("/home/arun/libgrfinger.so")
仍然出现 Unsatisfied Link Error。
我尝试加载其他一些 .so 文件,我能够做到这一点。我不知道为什么我只在libgrfingerjava.so
.
我正在将Griaule Finger SDK 2009集成到我的手指阅读应用程序中。