2013-10-02 36 views
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的链接是否能解决问题? (我在目录中没有权限,BTW,这就是为什么我还没有尝试过。)

环境信息:CentOS机器,用gfortran编译的代码。是的,当我编译时,我的-L标志指向LD_LIBRARY_PATH指向的同一个目录。

谢谢。

+0

从libnetcdff.so.0创建一个符号链接到libnetcdff.so.5。它应该工作... – iamauser

+0

删除我的评论,因为我看到了我的错误。你的想法有效。 –

回答

1

库链接应该工作。既然你提到,你没有根/ sudo访问,你可以做的是在一个文件中的链接,您在访问:

ln -s /path/to/libnetcdff.so.0 /path/you/have/access/to/libnetcdff.so.5 

,然后在LD_LIBRARY_PATH添加在/path/you/have/access/to/

+0

试过了。没有按计划去。请参阅我对上面的iamauser的回复。任何有关错误的想法都是非常受欢迎的。 –

+0

欣赏您的编辑。唯一的问题是,ls系列中的两颗星星实际上是两颗星星,而不是格式标签,应该保留原位。我不知道如何做一个“重新编辑”。 –

+0

忽略我的第一条评论。我看到了我的错误。你的想法奏效了。谢谢。 –