如何修复 Rust diesel cli link libpq.lib 安装错误

How to fix Rust diesel cli link libpq.lib error on install

我正在尝试(现在几个小时)为 postgres 安装 cargo crate diesel_cli。但是,每次我 运行 recommended cargo 命令:

cargo install diesel_cli --no-default-features --features postgres

我等了几分钟,只是为了看到相同的构建失败 -> 中止错误,并显示以下消息:

note: LINK : fatal error LNK1181: cannot open input file 'libpq.lib'


error: aborting due to previous error

error: failed to compile `diesel_cli v1.4.1`, intermediate artifacts can be found at `C:\Users\<user name here>\AppData\Local\Temp\cargo-installUU2DtT`

Caused by:
  could not compile `diesel_cli`.

我在 docker 容器中 运行ning postgres,我的 C:\pgsql 上有二进制文件,libbin 目录都在PATH 所以我不明白为什么它没有链接。他们在文档中没有提到的其他要求是什么?

将文件夹添加到 PATH 变量没有帮助,至少在我的情况下,因为某些原因它没有在传递给 link.exe/LIBPATH 参数中使用. 在我的例子中是 C:\Users\<username>\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\x86_64-pc-windows-msvc\lib 您可以在错误消息的开头看到它。 将 libpq.lib 复制到那里,它将从那里使用。

安装柴油后需要一些其他组件。将 libcrypto-1_1-x64.dlllibiconv-2.dlllibssl-1_1-x64.dll 复制到执行 where diesel 命令后显示的文件夹中

在我的例子中,安装是成功的,但是当我尝试 运行 时,出现了这个错误。 也许这对遇到同样问题的其他人有用:

  • 打开 PowerShell
  • 输入 setx PQ_LIB_DIR "C:\Program Files\PostgreSQL\lib"(或您的 PostgreSQL 库的任何其他路径)
  • 重启电脑
  • 运行 再

我在使用 WSL 时遇到了同样的问题,如果您使用的是 Linux,您可能可以找到 PostgreSQL 库位置并将其添加到您的环境变量中。

我在 Ubuntu 上遇到了同样的错误,对我来说,以下安装解决了这个问题:

sudo apt install libpq-dev

无需移动文件,只需将 C:\Program Files\PostgreSQL\libC:\Program Files\PostgreSQL\bin 添加到您的 PATH 即可。安装和 运行 柴油机应该没有问题。

注意:您的路径可能不同,请记住close/reopen您的终端以便更新 PATH 变量。

(在 Windows 10 上测试)

为 windows 提供明确的步骤:

  1. 在环境变量的路径中添加C:\Users<用户名>.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\x86_64-pc-windows-msvc\lib

  2. 复制 C:\Program Files\PostgreSQL\lib 中的 libpq.lib(显然这是版本 14)并将其粘贴到 C:\Users.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\x86_64-pc-windows-msvc\lib