1

我在两台不同的 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 位二进制文​​件。有任何想法吗?

4

1 回答 1

0

你可以将你的拱形标志传递给我相信的。喜欢gem install pg -- --arch-flags='i386'

或任何 pg 接受的拱标志。也应该是一个标志,您可以通过它来定义拱形类型(导致它找到那个)

你也可以说gem install pg -- --with-pg-include=/path/to/pg/include --with-pg-dir=/path/to/pg_config

于 2012-10-15T23:20:54.137 回答