启动程序时出现以下错误:
加载共享库时出现错误:libnetcdf.so.6:无法打开共享对象文件:没有这样的文件或目录
关键是libnetcdf.so.6
是该库的旧版本,我删除了它并构建了新版本。
所以,当我尝试ldd
时,我看到了:
libnetcdf.so.7 => /usr/local/lib/libnetcdf.so.7 (0x00007f70f8c4b000)
但也
libnetcdf.so.6 => not found
为什么这个老参考?我该怎么做才能解决?
答案 0 :(得分:3)
您需要将应用程序重新链接到libnetcdf.so.7,以便应用程序查找而不是.6
如果没有版本号(libnetcdf.so),您可能会有一个链接器将查看的符号链接,如果不存在,您可能需要在重新链接之前创建它:
ln -s libnetcdf.so.7 libnetcfd.so
如果您无法重新链接应用程序,那么您可以创建一个符号链接以使应用程序查看您的新库(尽管如果库版本不是二进制兼容的话可能会导致分段错误)指向实际的.so文件:
ln -s libnetcfd.so.7 libnetcfd.so.6
这将导致应用程序找到它需要的共享对象,但不是理想的解决方案。