繁体   English   中英

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

[英]“cannot open shared object file,” but it exists

我无法找到为什么这个库 (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做错了吗?)

该错误实际上告诉您“库缓存中不存在具有该名称的兼容库”,而不是“磁盘上不存在具有该文件名的文件”。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM