【发布时间】: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