【问题标题】:Looking for missing shared library寻找丢失的共享库
【发布时间】:2013-10-09 06:06:02
【问题描述】:

在 Linux 系统上,我正在尝试运行一个使用一些共享库(netCDF 库,如果有影响的话)的 Fortran 程序。在我运行之前,我设置了LD_LIBRARY_PATH,使它指向我的库的位置。然后我运行可执行文件,我很快得到错误

../my_program:加载共享库时出错:libnetcdff.so.5:无法打开共享对象文件:没有这样的文件或目录

现在,我再次检查 LD_LIBRARY_PATH 的值,然后 cd 到它并找到原来的一天

$ ls *ff*

$ libnetcdff.a libnetcdff.la libnetcdff.so libnetcdff.so.0 libnetcdff.so.0.0.0

所以 libnetcdff 是绝对存在的。

谁能指出我的问题?

我想到的一件事是可执行文件似乎想要找到 libnetcdff.so.5,而存在的库实际上是 libnetcdff.so.0。那是问题吗?如果是这样,有没有办法说服可执行文件不坚持“5”?或者,从 libnetcdff.so.0 到 libnetcdff.so.5 的链接可以解决问题吗? (顺便说一句,我在目录中没有权限,这就是为什么我还没有尝试过。)

环境信息:CentOS 机器,使用 gfortran 编译的代码。是的,当我编译时,我的 -L 标志指向 LD_LIBRARY_PATH 指向的同一目录。

谢谢。

【问题讨论】:

  • 从 libnetcdff.so.0 创建到 libnetcdff.so.5 的符号链接。它应该工作......
  • 删除了我的评论,因为我看到了我的错误。你的想法行得通。

标签: linux fortran shared-libraries fortran90 netcdf


【解决方案1】:

图书馆链接应该可以工作。既然您提到您没有 root/sudo 访问权限,您可以做的是链接到您 确实 有权访问的文件中:

ln -s /path/to/libnetcdff.so.0 /path/you/have/access/to/libnetcdff.so.5

然后在您的LD_LIBRARY_PATH 中添加/path/you/have/access/to/

【讨论】:

  • 试过了。没有按计划进行。请参阅上面我对 iamauser 的回复。任何关于哪里出了问题的想法都非常受欢迎。
  • 感谢您的编辑。唯一的问题是 ls 行中的两颗星实际上是两颗星,而不是格式标记,应该留在原处。我不知道如何进行“重新编辑”。
  • 忽略我的第一条评论。我看到了我的错误。你的想法奏效了。谢谢。
  • 很好奇,我实际上不记得删除那些星号(我知道它们很重要),但编辑日志显示我确实删除了它们。很高兴我能帮上忙!
猜你喜欢
  • 2017-07-11
  • 1970-01-01
  • 2010-10-15
  • 1970-01-01
  • 2012-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-08
相关资源
最近更新 更多