我正在试着(现在几个小时)为Postgres安装货箱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>AppDataLocalTempcargo-installUU2DtT`
Caused by:
could not compile `diesel_cli`.
我在docker容器中运行postgres,并将C:\pgsql
上的二进制文件与PATH
上的lib
和bin
目录放在一起,因此我不知道为什么它没有链接。还有什么是他们在文件中没有提到的要求?
6条答案
按热度按时间wqsoz72f1#
在我的例子中,安装是成功的,但当我试图运行它时,出现了这个错误。也许这对其他有同样问题的人也有效:
setx PQ_LIB_DIR "C:\Program Files\PostgreSQL\13\lib"
(或您的PostgreSQL库的任何其他路径)我在WSL上遇到了同样的问题,如果你在Linux上,你可能可以找到PostgreSQL库的位置,并将它添加到你的环境变量中。
toe950272#
更新:
下面的答案是较旧版本的变通方法。请先检查是否可以执行
cargo clean
原始版本
将文件夹添加到
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.dll
、libiconv-2.dll
和libssl-1_1-x64.dll
复制到执行where diesel
命令后显示的文件夹中luaexgnf3#
我在Ubuntu上也遇到了同样的错误,对我来说,下面的安装修复了这个问题:
7y4bm7vi4#
如果在环境无效时尝试装载构建(或运行libpq rust crate的构建脚本的任何内容),则需要在修复环境后执行
cargo clean
,否则即使在路径中也会收到libpq.lib Not Found错误。将文件复制到另一个目录中的其他答案只是一些技巧6ioyuze25#
无需移动文件,只需在路径中添加
C:\Program Files\PostgreSQL\14\lib
和C:\Program Files\PostgreSQL\14\bin
即可。安装和运行柴油应该不会有任何问题。(在Windows 10上测试)
wmtdaxz36#
要为窗口提供明确的步骤,请执行以下操作:
1.在环境变量的路径中添加C:\Users.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\x86_64-pc-windows-msvc\lib
1.复制C:\Program Files\PostgreSQL\14\lib中的libpq.lib(显然这是版本14),并将其粘贴到C:\Users.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\x86_64-pc-windows-msvc\lib中