1

在 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

谢谢。

4

1 回答 1

2

图书馆链接应该可以工作。由于您提到您没有 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.

于 2013-10-02T18:30:47.647 回答