我在两台不同的OSX 10.8.2机器上安装了Ruby / Gem / Rails。一个工作正常,另一个似乎工作,直到我尝试安装包含本机代码如pg的gem。当我做的时候
gem install pg -v 0.12.2
它失败了“无法找到PostgeSQL客户端库(libpq)。
如果我看一下mkmf.log,我看到:
have_library: checking for PQconnectdb() in -lpq... -------------------- no "gcc-4.2 -o conftest -I/Users/brian/.rvm/rubies/ruby-1.9.3-p286/include/ruby-1.9.1/i386-darwin12.2.0 -I/Users/brian/.rvm/rubies/ruby-1.9.3-p286/include/ruby-1.9.1/ruby/backward -I/Users/brian/.rvm/rubies/ruby-1.9.3-p286/include/ruby-1.9.1 -I. -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -I/usr/include -I/Users/brian/.rvm/usr/include -fno-common -pipe conftest.c -L. -L/Users/brian/.rvm/rubies/ruby-1.9.3-p286/lib -L. -L/Users/brian/.rvm/usr/lib -L/usr/local/lib -L/usr/lib -lruby.1.9.1 -lpq -lpthread -ldl -lobjc "
ld: warning: ignoring file /usr/local/lib/libpq.dylib, file was built for unsupported file format ( 0xcf 0xfa 0xed 0xfe 0x 7 0x 0 0x 0 0x 1 0x 3 0x 0 0x 0 0x 0 0x 6 0x 0 0x 0 0x 0 ) which is not the architecture being linked (i386): /usr/local/lib/libpq.dylib
Undefined symbols for architecture i386:
"_PQconnectdb", referenced from:
_t in ccLXteQk.o
我相信这是因为被忽略的库是一个64位库(我想要),但我的ruby安装是32位(由于某种原因)。作为证据,在有效的机器上我看到了
~/.rvm/rubies/ruby-1.9.3-p194/include/ruby-1.9.1/x86_64-darwin12.2.0/ruby/config.h
在失败的那个
~/.rvm/rubies/ruby-1.9.3-p194/include/ruby-1.9.1/i386-darwin12.2.0/ruby/config.h
很抱歉很长的解释。我已经尝试了很多东西来尝试设置
的架构rvm install 1.9.3
正在生成这些目录。我的努力都没有引起“坏”机器产生一个包含目录以保持所需的64位二进制文件。我并没有故意在这些构建中设置架构,所以我在这一点上感到困惑的是,“坏”机器的环境导致ruby安装认为它应该构建32位二进制文件。有什么想法吗?
答案 0 :(得分:0)
你可以将你的拱旗传递给我相信的。与gem install pg -- --arch-flags='i386'
或pg接受arch标志的任何内容。也应该是一个标志,你可以通过它来定义拱门类型(导致它找到)
您也可以说gem install pg -- --with-pg-include=/path/to/pg/include --with-pg-dir=/path/to/pg_config