当前位置: 首页 > 知识库问答 >
问题:

/usr/bin/ld:找不到-lpq问题

李景天
2023-03-14

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

共有1个答案

云胤
2023-03-14

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

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

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

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

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

 类似资料:
  • 问题内容: 我正在尝试编译我的程序,它返回此错误: 在我的makefile文件中,我使用命令并链接到我的库,这是到我的库的另一个目录的符号链接。 是否可以添加选项以使其正常工作? 问题答案: 如果您的图书馆名称是say 并且位于路径上,请说: 然后将其链接到您的程序:

  • 问题内容: 我正在尝试使用Python 2.7安装MySQLdb。我收到的错误如下所示: 显然,它找不到Python 2.7。展望我看到: 该符号是什么意思?谁能建议对此错误采取补救措施? 问题答案: 它找不到Python库,而不是可执行文件。运行以查看Python库的位置,然后将其添加到库路径(例如,如果位于中,则要调用)。 该符号意味着该文件是一个符号链接; 表示它是可执行文件(这些文件由产生

  • 因此,我试图使用make-f Makefile编译一个程序,但我得到了以下错误/usr/bin/ld:not find-lgd 生成文件: 替换(libgd.a libgd.la libgd.so libgd.so.2 libgd.so.2.0.0)后,我收到以下错误:

  • 我试图编译我的程序,它返回这个错误: 在我的makefile中,我使用命令并链接到我的库,这是一个符号链接到我位于其他目录上的库。 是否有一个选项添加,使其工作,请?

  • 我正在按照帮助中的coder教程进行操作。使用时,出现如下错误: /usr/bin/ld:找不到-lstdc Collect2:ld返回1退出状态 但是在 中都有库

  • 我在/usr/local/lib中有libcommon.so,我在程序中链接了这个库。 gcc -o测试test _ Prog . c-L/usr/local/lib-llib common . so 我也试过这个 gcc -o test test_prog.c -L/usr/local/lib -llibcommon 是给予 /usr/bin/ld: 找不到 -llibcommon.so 收集