在Linux系统上,我正在尝试运行一个使用一些共享库的Fortran程序(netCDF库,如果这有所不同)。在我运行之前,我设置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的链接会解决问题吗? (我在目录中没有权限,BTW,这就是为什么我还没有尝试过。)
环境信息:CentOS机器,用gfortran编译的代码。是的,当我编译时,我的-L
标志指向LD_LIBRARY_PATH
指向的同一目录。
感谢。
答案 0 :(得分:1)
图书馆链接应该有用。由于您提到您没有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
。