找不到ldd库

时间:2013-09-23 14:05:01

标签: linux g++ shared-libraries ldd

启动程序时出现以下错误:

  加载共享库时出现

错误:libnetcdf.so.6:无法打开共享对象文件:没有这样的文件或目录

关键是libnetcdf.so.6是该库的旧版本,我删除了它并构建了新版本。

所以,当我尝试ldd时,我看到了:

libnetcdf.so.7 => /usr/local/lib/libnetcdf.so.7 (0x00007f70f8c4b000)

但也

libnetcdf.so.6 => not found

为什么这个老参考?我该怎么做才能解决?

1 个答案:

答案 0 :(得分:3)

您需要将应用程序重新链接到libnetcdf.so.7,以便应用程序查找而不是.6

如果没有版本号(libnetcdf.so),您可能会有一个链接器将查看的符号链接,如果不存在,您可能需要在重新链接之前创建它:

ln -s libnetcdf.so.7 libnetcfd.so

如果您无法重新链接应用程序,那么您可以创建一个符号链接以使应用程序查看您的新库(尽管如果库版本不是二进制兼容的话可能会导致分段错误)指向实际的.so文件:

ln -s libnetcfd.so.7 libnetcfd.so.6

这将导致应用程序找到它需要的共享对象,但不是理想的解决方案。