"undefined symbol" 在 Apache 模块中运行 运行 JNI_CreateJavaVM 时出错
"undefined symbol" error while running JNI_CreateJavaVM function in Apache module
我想通过 ap_hook_pre_config
有趣的方式在 Apache 模块中初始化 JVM,但是当我 运行 XAMPP 时,出现了这个错误:
XAMPP: Starting Apache...fail.
httpd: Syntax error on line 158 of /opt/lampp/etc/httpd.conf: Cannot load modules/mod_hotcup.so into server: /opt/lampp/modules/mod_hotcup.so: undefined symbol: JNI_CreateJavaVM
奇怪,编译正常
有什么遗漏的想法吗?
我用的是Ubuntu18,Java11.这是源码mod_hotcup.c
您的问题来自调用 ld
时的参数顺序:
link 的库必须在 link 的代码之后。
而不是
ld -Bshareable -o mod_hotcup.so mod_hotcup.o
应该是
ld -Bshareable -o mod_hotcup.so mod_hotcup.o -L${LIBPATH} -ljvm
我想通过 ap_hook_pre_config
有趣的方式在 Apache 模块中初始化 JVM,但是当我 运行 XAMPP 时,出现了这个错误:
XAMPP: Starting Apache...fail.
httpd: Syntax error on line 158 of /opt/lampp/etc/httpd.conf: Cannot load modules/mod_hotcup.so into server: /opt/lampp/modules/mod_hotcup.so: undefined symbol: JNI_CreateJavaVM
奇怪,编译正常
有什么遗漏的想法吗?
我用的是Ubuntu18,Java11.这是源码mod_hotcup.c
您的问题来自调用 ld
时的参数顺序:
link 的库必须在 link 的代码之后。
而不是
ld -Bshareable -o mod_hotcup.so mod_hotcup.o
应该是
ld -Bshareable -o mod_hotcup.so mod_hotcup.o -L${LIBPATH} -ljvm