在 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
。
谢谢。