我一直在尝试在运行 Big Sur 的计算机(配备 M1 的 Macbook Pro 2020)上安装 rails 项目。
我安装了 PostgresApp。
运行 bundle install
时,它无法构建 pg
gem,因此我尝试手动安装 gem(通过执行 gem install pg
- 也尝试使用 gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/10/bin/pg_config
)。>
我收到一条错误消息:
ERROR: Error installing pg:
ERROR: Failed to build gem native extension.
Can't find the PostgreSQL client library (libpq)
*** extconf.rb failed ***
检查错误日志时,我看到:
have_library: checking for PQconnectdb() in -lpq... -------------------- no
ld: warning: ignoring file /Applications/Postgres.app/Contents/Versions/13/lib/libpq.dylib, building for macOS-arm64 but attempting to link with file built for macOS-x86_64
Undefined symbols for architecture arm64:
"_PQconnectdb", referenced from:
_t in conftest-db479f.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
checked program was:
/* begin */
1: #include "ruby.h"
2:
3: #include <libpq-fe.h>
4:
5: /*top*/
6: extern int t(void);
7: int main(int argc, char **argv)
8: {
9: if (argc > 1000000) {
10: printf("%p", &t);
11: }
12:
13: return 0;
14: }
15: int t(void) { void ((*volatile p)()); p = (void ((*)()))PQconnectdb; return !p; }
/* end */
知道如何解决这个问题吗?
答案 0 :(得分:1)
我在使用 M1 + ruby pg gem 时遇到了同样的问题。问题是我的系统上混合了 ARM + x86 二进制文件,而 pg
显然目前只能用 x86 编译。仅供参考,在其 github 存储库中报告了新问题,因此希望它会很快得到解决 here
我的工作:
卸载基于 ARM 的 homebrew + rbenv 并从主目录 (homebrew uninstall instructions) 中删除 .gem
+ .rbenv
目录
将 homebrew 重新安装为基于 x86 的英特尔
$ arch -x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
$ arch -x86_64 brew install rbenv
$ arch -x86_64 rbenv install 2.7.2
$ bundle config build.pg- --with-pg-config=/Applications/Postgres.app/Contents/Versions/latest/bin/pg_config
$ bundle install
$ rails s