【问题标题】:/usr/bin/ld: cannot find -lpq Issue/usr/bin/ld: 找不到 -lpq 问题
【发布时间】:2021-03-13 12:38:48
【问题描述】:

我的应用程序需要 libpq、paho-mqtt 库和 mqtt 代理。我已经使用我的应用程序将它们全部安装并构建在一个单独的文件夹中。当我尝试使用“make”命令构建我的应用程序时,我遇到了 /usr/bin/ld: cannot find -lpq 错误。如何将我的应用程序目录链接到 libpq 库?

【问题讨论】:

  • 试试sudo apt-get install -y libpq-dev

标签: linux postgresql libpq


【解决方案1】:

我遇到了这个错误,因为我还编译了 postgresql 和名为 libpq 的 postgresql 库。因此,当您编写 C 程序并使用 -lpq 选项编译它时,它可能无法正常工作,除非您更新了 GCC 查找库的路径。

我提供的解决方案不是最好的,但我将安装 postgresql 库的目录中的文件符号链接,通常使用“usr/local/pgsql/lib”到“usr/include”

ln -s  /usr/local/pgsql/lib/* /usr/lib/

*您可能需要 root 权限才能执行上述命令,如果失败,请尝试使用 sudo。 这只是其中一种方法,更好的方法是使用变量“LIBRARY_PATH”更新 GCC 的链接器路径以包含 postgresql 库路径。您还可以在 GCC 中使用选项 -L 并指定您希望 GCC 查找链接库的目录。

这只有在你安装了整个 postgresql 包,或者你通过使用“make world”和“make install-world”从源代码编译 postgresql 时才有效,这会生成库和文档。如果您还没有这样做,那么您可以安装名为 postgresql-libs 的软件包,此方法将取决于操作系统。对于 arch 有一个名为 postgresql-libs 的包,可以通过 Pacman 安装。对于 Ubuntu,我认为它称为 libpq-dev。如果您已经编译了整个软件包,则无需通过软件包管理器再次安装它,因为库可以从源代码中创建,您还应该注意,如果您从软件包安装的库之间存在版本不匹配,库可能会导致问题管理器和您从源代码编译的数据库二进制文件,因此在安装之前请查看。然而,这可能并不总是发生。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-07
    • 2011-01-18
    • 2020-04-21
    • 1970-01-01
    • 2011-07-16
    • 2012-05-17
    • 2020-04-14
    • 2012-03-26
    相关资源
    最近更新 更多