无法在 Mac M1 上链接 libpq

我一直在尝试在我的 Macbook M1 上运行 Rust Diesel 板条箱,但它不起作用。编译的最后部分被以下错误破坏:

  = note: ld: warning: ignoring file /usr/local/Cellar/libpq/14.1/lib/libpq.dylib, building for macOS-arm64 but attempting to link with file built for macOS-x86_64
          Undefined symbols for architecture arm64:

当我得到 libpq 的信息时,我得到以下信息:

maxwellflitton@Maxwells-MacBook-Pro vanguard % brew info libpq                                                           
libpq: stable 14.1 (bottled) [keg-only]
Postgres C API library
https://www.postgresql.org/docs/14/libpq.html
/usr/local/Cellar/libpq/14.1 (2,335 files, 27.8MB)
  Poured from bottle on 2022-01-09 at 00:14:32
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/libpq.rb
License: PostgreSQL
==> Dependencies
Required: krb5 ✔, openssl@1.1 ✔
==> Caveats
libpq is keg-only, which means it was not symlinked into /usr/local,
because conflicts with postgres formula.

If you need to have libpq first in your PATH, run:
  echo 'export PATH="/usr/local/opt/libpq/bin:$PATH"' >> ~/.zshrc

For compilers to find libpq you may need to set:
  export LDFLAGS="-L/usr/local/opt/libpq/lib"
  export CPPFLAGS="-I/usr/local/opt/libpq/include"

我尝试使用以下命令进行安装:

RUSTFLAGS='-L /usr/local/Cellar/libpq/14.1/lib' cargo install diesel_cli --no-default-features --features postgres --force

但我仍然得到同样的错误。擦拭整个事情并重新开始会更容易吗?如果是这样,我该怎么做?互联网上使用 M1 的其他人似乎能够通过一个简单的 brew install libpq 来解决这个问题。我以前的英特尔 mac 从来没有任何问题。我的 ~/.cargo/config.toml 具有以下配置:

[target.aarch64-apple-darwin]
rustflags = '-L /usr/local/Cellar/libpq/14.1/lib -L /opt/homebrew/lib'
stack overflow cannot link libpq on Mac M1
原文答案

答案:

作者头像

在我的 M1 mac 上,我使用 brew 安装了 postgresql 客户端和库:

brew install postgresql libpq

并尝试再次安装 diesel_cli ,这次它运行良好:

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

出于某种原因,仅安装 libpq 不足以安装 diesel_cli ,我必须安装 postgres 库 and 客户端。

作者头像

遇到了类似的问题,问题来自我的 brew 配置(我从我的 mac Intel 恢复了我的文件系统):

❯ brew config
...
macOS: 12.6-x86_64
...

因此,brew 正在下载为英特尔处理器构建的软件包。我在 their website 之后卸载并重新安装了 brew,现在 brew 配置是正确的:

❯ brew config
...
macOS: 12.6-arm64
...

希望这可以帮助!

作者头像

我有一台 Mac M1 并使用 brew 安装了 postgresql 和 libpq

我最终成功地在 ~/.cargo/config.toml 文件中使用这些行安装了diesel_cli

[target.aarch64-apple-darwin]
rustflags = '-L /opt/homebrew/opt/libpq/lib -L /opt/homebrew/lib'

来源是 https://github.com/diesel-rs/diesel/issues/2605