在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的链接是否能解决问题? (我在目录中没有权限,BTW,这就是为什么我还没有尝试过。)
环境信息:CentOS机器,用gfortran编译的代码。是的,当我编译时,我的-L
标志指向LD_LIBRARY_PATH
指向的同一个目录。
谢谢。
从libnetcdff.so.0创建一个符号链接到libnetcdff.so.5。它应该工作... – iamauser
删除我的评论,因为我看到了我的错误。你的想法有效。 –