我应该如何加载 JNI 的本机库以避免不满意的LinkError?
2022-09-02 19:21:32
我想在Ubuntu 8.10上使用JNI,使用Eclipse和gcc(如果有口味的话,是Ubuntu的标准版本)。
我似乎无法加载我的库,尽管make文件成功创建了它。
主要的 Java 类如下所示:
class Hello {
public native void sayHello();
static {
System.loadLibrary("hello.so");
}
public static void main(String[] args) {
Hello h = new Hello();
h.sayHello();
}
}
我的制作文件就是这样;
all : hello.so
hello.so : Hello.o
gcc -shared -o hello.so Hello.o
Hello.o : Hello.c Hello.h
gcc -I/usr/lib/jvm/java-6-sun/include -I/usr/lib/jvm/java-6-sun/include/linux -c Hello.c -o Hello.o
Hello.h : Hello.class
javah -jni Hello
clean :
-del Hello.h
-del Hello.o
其余的代码(Hello.c)看起来像人们会想到的。
我得到的错误如下;
Exception in thread "main" java.lang.UnsatisfiedLinkError: no hello.so in java.library.path
如果我使用显式路径:
System.loadLibrary("/home/gavin/Work/workspace/JNI/hello.so");
然后它有效,但如果可能的话,我宁愿不使用显式路径。