【发布时间】:2016-01-01 08:39:34
【问题描述】:
这是我在运行gem install pg 时遇到的错误:
ERROR: Error installing pg:
ERROR: Failed to build gem native extension.
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby -r ./siteconf20151004-5579-1t2l557.rb extconf.rb
checking for pg_config... yes
Using config values from /usr/local/bin/pg_config
checking for libpq-fe.h... yes
checking for libpq/libpq-fs.h... yes
checking for pg_config_manual.h... yes
checking for PQconnectdb() in -lpq... no
checking for PQconnectdb() in -llibpq... no
checking for PQconnectdb() in -lms/libpq... no
Can't find the PostgreSQL client library (libpq)
*** extconf.rb failed ***
如果我运行brew install postgres,我会得到:
Warning: postgresql-9.4.4 already installed
同样,gem list 显示 pg (0.18.3) 和一个简单的 gem -v pg 给出:
2.4.4
运行sudo ARCHFLAGS="-arch x86_64" gem install pg 返回:
Building native extensions. This could take a while...
Successfully installed pg-0.18.3
invalid options: -f fivefish
(invalid options are ignored)
Parsing documentation for pg-0.18.3
Done installing documentation for pg after 4 seconds
1 gem installed
但是bundle install 抛出了这个错误:
An error occurred while installing pg (0.18.3), and Bundler cannot continue.
Make sure that `gem install pg -v '0.18.3'` succeeds before bundling.
我在mkmf.log 看到了这个,我认为这可能是最大的线索:
ld: warning: ignoring file /opt/local/lib/postgresql93/libpq.dylib, file was built for x86_64 which is not the architecture being linked (i386): /opt/local/lib/postgresql93/libpq.dylib
Undefined symbols for architecture i386:
"_PQconnectdb", referenced from:
_t in conftest-fc6c12.o
ld: symbol(s) not found for architecture i386
这很奇怪,因为 file /opt/local/lib/postgresql93/libpq.dylib 返回 x86_64,而不是 i386:
/opt/local/lib/postgresql93/libpq.dylib: Mach-O 64-bit dynamically linked shared library x86_64
这也不起作用:
sudo env ARCHFLAGS="-arch i386 -arch x86_64" gem install pg
【问题讨论】:
-
看看这里有没有帮助:stackoverflow.com/questions/19625487/…
-
感谢您的回复。我更新了我的问题以包含这些解决方案的结果。
标签: ruby-on-rails ruby macos postgresql gem