在linux系统上,我试图运行一个fortran程序,它使用一些共享库(netcdf libs,如果这有区别的话)。在运行之前,我设置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
所以libnetcdff是绝对存在的。
有人能告诉我这个问题吗?
我想到的一件事是,可执行文件似乎想要找到libnetcdff.so.5,而存在的库实际上是libnetcdff.so.0。这就是问题所在吗?如果是,有没有办法说服可执行文件不坚持“5”?或者,从libnetcdff.so.0到libnetcdff.so.5的链接可以解决问题吗?(顺便说一句,我在目录中没有权限,所以我还没有尝试过。)
环境信息:centos机器,用gfortran编译的代码。是的,当我编译时,我的-L标志指向的目录与LD_LIBRARY_PATH指向的目录相同。
谢谢。

最佳答案

库链接应该可以工作。既然您提到您没有root/sudo访问权限,那么您可以做的是链接到您有访问权限的文件:

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

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

09-16 19:05