2017-06-06 122 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

回答