dlopen()忽略$ LD_LIBRARY_PATH

时间:2019-08-02 17:40:03

标签: c linux dynamic-linking dlopen dynamic-loading

尝试从设置为libOpenCL.so的{​​{1}}中动态加载程序中的LD_LIBRARY_PATH。我再次检查了./是否以正确的拼写出现在当前目录中,并且我正在当前目录中运行以下程序。

libOpenCL.so

这将输出:#include <stdio.h> #include <dlfcn.h> int main(void) { const char* dl_path = "libOpenCL.so"; if (dlopen(dl_path, RTLD_NOW) == NULL) printf("Cannot open shared lib: %s\n", dlerror()); else printf("Open successful\n"); return 0; }

当我使用相对路径字符串即Cannot open shared lib: libOpenCL.so: cannot open shared object file: No such file or directory调用dlopen()时,它打开得很好。

根据我对"./libOpenCL.so"文档的理解,在dlopen()搜索中应考虑非空的LD_LIBRARY_PATH,但有一些例外情况不适用于我的示例。我在这里可能还有其他问题吗?

这是针对Arch Linux,glibc 2.29,GCC 9.1

运行它:

.so

0 个答案:

没有答案