dlopen 在 Rhel 7.2 上失败,64 位 libjvm.so

dlopen failing on Rhel 7.2, 64 bit for libjvm.so

我正在 64 位 java 进程中的 RHEL 64 上调用 dlopen ("libjvm.so", RTLD_NOLOAD)。它失败并出现错误:

 libjvm.so: invalid mode for dlopen(): Invalid argument

我做了 lsof -p <pid of java process>,它显示 libjvm.so 作为加载的模块。 libjvm.so 从路径 jre1.8.0_121/lib/amd64/server/libjvm.so 加载。 无法找到有关该错误的更多信息。当使用 java 的 32 位版本时,同样的事情也能正常工作。其中 libjvm.so 是从 lib/i386/client 目录加载的。感谢有关在哪里查找原因或此错误的真正含义的任何指示。谢谢。

invalid mode for dlopen()

这是正确的错误:您使用无效模式调用了 dlopen

来自dlopen man page

One of the following two values must be included in flags:
   RTLD_LAZY ...
   RTLD_NOW  ...