0
所有导游JNI我已经看到了(如JNI runtime linking)建议我联系我的JNI库对libjvm.so
:libjvm.so:链接或不链接?
$ gcc -I${JAVA_HOME}/include -c -o test.o test.c
$ gcc -shared -o libtest.so test.o -L${JAVA_HOME}/jre/lib/i386/server -Wl,-rpath,${JAVA_HOME}/jre/lib/i386/server -ljvm
如果我的自定义库是用C++,并使用C++ JNI API,我可以清楚地看到相应的弱符号在nm -C
输出:
00000690 W JNIEnv_::ThrowNew(_jclass*, char const*)
00000672 W JNIEnv_::FindClass(char const*)
不过,如果我做在命令行中没有提及-ljvm
,定制机库继续工作就好了,可能是因为libjvm.so
由任何 Java进程自动加载。
你能告诉我什么时候它是绝对是需要明确链接到libjvm.so
?