Linux dlerror从dlopen返回错误消息,我无法解释

时间:2015-02-04 19:13:27

标签: c++ linux dlopen

我在使用C ++ / Linux中的dlopen函数时遇到了问题。

void * hsiftgpu = dlopen("/full/path/libsiftgpu.so", RTLD_LAZY);

我认为dlerror()产生的任何错误都会告诉我无法找到/打开libsiftgpu.so。这是我检查错误的代码:

if(hsiftgpu == NULL){
    std::cout << "Could not load libsiftgpu.so" << '\n';
    fprintf(stderr, "dlopen failed: %s\n", dlerror());
    return 0;
}

相反,它告诉我:

dlopen failed: libcudart.so.6.5: cannot open shared object file: No such file or directory

我对Linux中的文件处理不太熟悉,所以我可能会遗漏一些明显的东西。我想知道在调用dlopen之前是否需要重置一些东西,或者libsiftgpu.so是否正在调用libcudart.so.6.5?无论哪种方式,这个错误信息对我来说都没有多大意义。

我已经尝试添加LD_LIBRARY_PATH的路径(即使它不建议安全性,我只是想看看它是否可行)和/etc/lib.conf.so/我还检查了确保可执行文件和.so库都以相同的ELF-64格式编译。

我已经没有要检查的事情,我无法解释错误信息。任何指导或可能的解释都表示赞赏。

1 个答案:

答案 0 :(得分:1)

这应该是指向32位库的可执行文件应该指向64位库的情况。我给评论的每个人都给了点数。