2017-06-06 167 views
0

所有导游JNI我已经看到了(如JNI runtime linking)建议我联系我的JNI库对libjvm.solibjvm.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

回答