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

标签 c++ dlopen rhel7

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

 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 加载的. 无法找到有关该错误的更多信息。使用 32 位版本的 java 时,同样的事情工作正常。从 lib/i386/client 加载 libjvm.so 的位置目录。感谢有关在哪里查找原因或此错误的真正含义的任何指示。谢谢。

最佳答案

invalid mode for dlopen()

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

来自 dlopen man page

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

关于c++ - dlopen 在 Rhel 7.2 上失败,64 位 libjvm.so,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42011053/

相关文章:

amazon-ec2 - 自定义层中的实例始终处于 start_failed 状态

centos - 在 CentOS 7 中使用更改的 API 构建内核模块

c++ - QTextEdit 和QTextDocument 缓冲问题?

C++:误解内存地址和指针的复制值

c++ - 如何知道 dlclose() 库的进程是否真正完成?

linux - "same library"的 dlopen 定义

C++ 重载 operator->() 没有被调用?

c++ - 预编译头 - 选择文件

android - android dlopen()中的竞争条件?

docker - 如何在Docker容器中启用yum repo