gpt4 book ai didi

java - libjvm.so : to link or not to link?

转载 作者:行者123 更新时间:2023-12-02 12:57:16 32 4
gpt4 key购买 nike

我见过的所有 JNI 指南(例如 JNI runtime linking )都建议我将 JNI 库链接到 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,自定义 native 库将继续正常工作,可能是因为libjvm.so 任何 Java 进程自动加载。

你能告诉我什么时候绝对需要显式链接libjvm.so吗?

最佳答案

我认为当您希望它以相反的方式运行时您需要它。

例如,您想从 C/C++ 代码创建 JVM 并调用 JVM 的方法。

例如,这里我们需要链接ljvm,否则你将在C代码中找不到符号。

https://github.com/mkowsiak/jnicookbook/tree/master/recipes/recipeNo027

关于java - libjvm.so : to link or not to link?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44387507/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com