“无法打开共享对象文件”,但它存在

时间:2016-03-10 22:33:21

标签: c++ .so

我很难找到为什么这个图书馆(matio)不适合我。在我的Makefile中,我有这个:

LIBS += -L/home/brian/.../matio-1.5.6/src/.libs/ -lmatio

当我尝试运行我的代码(链接正常)时,我收到此错误:

  加载共享库时出现

错误:libmatio.so.4:无法打开共享对象文件:没有这样的文件或目录

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做错了吗?)

1 个答案:

答案 0 :(得分:2)

错误实际告诉你“库缓存中没有与该名称相关的兼容库”,而不是“磁盘上没有该文件名的文件”。

因此,令人困惑的是,当共享对象文件的格式错误时,就会发生这种情况。

确保它是由正确的编译器为正确的平台构建的!您可以查看file并使用可执行文件ldd验证动态链接是否失败。