好的,所以在这里没有什么进展。之前我发布了一个问题,我的Mac M1与Rust Diesel有链接器问题,但一无所获。所以我创建了一个Ec2实例,并尝试在这里运行这个板条箱,得到了以下结果:
error: linking with `cc` failed: exit status: 1
...
= note: /usr/bin/ld: cannot find -lpq
我已经安装了以下内容:
sudo yum update -y
sudo yum install git -y
sudo yum groupinstall "Development Tools" -y
sudo yum install cmake -y
sudo yum install postgresql-libs -y
说真的,人们是怎么让这个箱子运转起来的?
来自Diesel入门指南:
如果您遇到类似以下错误:
注意:ld:找不到-lmysqlclient的库clang:error:linker命令失败,退出代码为1(使用-v查看调用(这意味着您缺少数据库后端所需的客户端库——在本例中为
mysqlclient
。您可以通过安装库(根据操作系统的不同,使用通常的方法(或使用--no-default-features
标志排除不需要的默认库来解决此问题。默认情况下,柴油机依赖于以下客户端库:
libpq
用于PostgreSQL后端- Mysql后端的
libmysqlclient
- SQlite后端的
libsqlite3
如果您不确定如何安装这些依赖项,请参阅相应依赖项的文档或您的分发包管理器。
例如,如果你只安装了PostgreSQL,你可以用它来安装只有PostgreSQL:的
diesel_cli
货物安装diesel_cli-没有默认功能-功能postgres
错误"CCD_ 7";是你的链接器告诉你它找不到PostgreSQL客户端库。
问题是由丢失的库引起的。对于Linux
sudo apt install libpq-dev
cargo install diesel_cli --no-default-features --features postgres
对于Windows,检查已安装的锈蚀版本
rustup --version
然后从复制libq.lib
C:Program FilesPostgreSQL14lib
至
C:Users"Your User".rustuptoolchains"Your version of Rust-Nightly or Stable"librustlibx86_64-pc-windows-msvclib
为我工作!!
我在Fedora 36上。问题似乎是我的电脑里有两个版本的Postgres,diesel不知道该使用哪个库。以下是解决问题的方法:
sudo dnf remove postgresql10-libs
sudo dnf install postgresql14-libs
sudo dnf install postgresql14-devel
编辑:这有点奏效,但后来又坏了。我用修复了它
sudo dnf remove postgresql14-devel
sudo dnf install libpq-devel.x86_64