加载共享库时出错:libpq.so.5:无法打开共享对象文件。没有这样的文件或目录

我试图在运行在Debian上的PostgreSQL 9.0.4服务器上执行pg_dump,但我得到的错误如下。

./pg_dump: error while loading shared libraries: libpq.so.5: cannot open shared object file: No such file or directory 

libpq.so.5libpq.so.5.3的链接,如下所示

lrwxrwxrwx 1 root root     12 Jun 27 16:24 libpq.so.5 -> libpq.so.5.3
-rwxr-xr-x 1 root root 180749 Jun 21 02:43 libpq.so.5.3

我到底是哪里做错了?

试试这个。

1: 知道libpq.so.5的路径

find / -name libpq.so.5

输出例子。 /usr/pgsql-9.4/lib/libpq.so.5。 如果没有发现,检查是否已经为你的postgresql版本和你的操作系统平台安装了合适的postgresql-libs

2:在一个`/usr/lib'等众所周知的库路径中符号链接该库。

ln -s /usr/pgsql-9.4/lib/libpq.so.5 /usr/lib/libpq.so.5

注意。 如果你的平台是64位,你也必须符号连接到64位库的路径。

ln -s /usr/pgsql-9.4/lib/libpq.so.5 /usr/lib64/libpq.so.5

3: 开心点 !

评论(0)

这些libpq文件在哪个目录下?你可以尝试设置环境变量LD_LIBRARY_PATH来指向这个目录,或者确保它在标准位置。

另外,为什么libpq.so.5链接没有显示在"如下所示"部分?也许你应该直接运行ldconfig

评论(16)

我在RHEL 6.5的Postgres 9.5上得到了同样的错误信息,这让我看到了这个帖子。 但在查找文件libpq.so.5时没有得到任何结果,这使事情变得更加混乱。

最后,以下的符号链接使其运行

ln -s /opt/rh/rh-postgresql95/root/usr/lib64/libpq.so.rh-postgresql95-5  /usr/lib64/libpq.so.rh-postgresql95-5 
ln -s /opt/rh/rh-postgresql95/root/usr/lib64/libpq.so.rh-postgresql95-5  /usr/lib/libpq.so.rh-postgresql95-5

这些路径适用于RHEL,使用find / -name libpq.so来定位你的安装,并使用原始文件名将其添加到相同的目标文件夹/usr/lib//usr/lib64/

根本原因似乎是安装时没有把这个文件放到一个共享位置。

评论(2)