我无法找到为什么这个库 (matio) 不适合我。在我的 Makefile 中我有这个:
LIBS += -L/home/brian/.../matio-1.5.6/src/.libs/ -lmatio
当我尝试运行我的代码(链接正常)时,出现此错误:
error while loading shared libraries: libmatio.so.4: cannot open shared object file: No such file or directory
libmatio.so.4 存在于 -L 标志指定的目录中。
我构建了这个库,它似乎通过了make check
,只有少数写入错误(这很好,因为我只需要它来阅读)。
我尝试过的事情:
- 指定名称(即
-l:libmatio.so.4.0.2
) - 将路径添加到
LD_LIBRARY_PATH
- 在
/etc/ld.so.conf
中将路径添加为一行并运行sudo ldconfig
- 使用路径在
/etc/ld.so.conf.d
中添加一个新文件并运行sudo ldconfig
(当我运行 ldconfig -p | grep matio
时没有任何返回。我是不是在使用 ldconfig
做错了什么?)
最佳答案
错误实际上是告诉您“库缓存中不存在具有该名称的兼容库”,而不是“磁盘上不存在具有该文件名的文件”。
因此,令人困惑的是,当共享对象文件的格式错误时,就会发生这种情况。
确保它是由正确的编译器为正确的平台构建的!您可以查看 file
并在您的可执行文件上使用 ldd
验证动态链接是否失败。
关于c++ - "cannot open shared object file,"但它存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35928696/