无法`gem install tiny_tds` OS X Mavericks

abc*_*123 4 gem homebrew tiny-tds

错误

$ sudo gem install tiny_tds

构建原生扩展.这可能需要一段时间......

错误:安装tiny_tds时出错:

错误:无法构建gem原生扩展.

/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby extconf.rb

检查iconv.h中的iconv_open()...没有

检查-liconv中的iconv_open()...是的

检查sybfront.h ...是的

检查sybdb.h ...是的

检查-lsybdb中的tdsdbopen()...没有


自制

即使在a之后也会出现上述错误

$ brew安装freetds


手动安装

$ tar zxf freetds-stable.tgz

$ cd freetds-0.91

$ ./configure

$ make

$ sudo make install


它似乎缺少以下文件/usr/local/lib/:

  • libsybdb.so

相反,我有以下文件:

  • libsybdb.a
  • libsybdb.dylib
  • libsybdb.la

研究

zhe*_*yue 22

我通过明确指定64位架构解决了这个问题:

$ brew install freetds
$ sudo ARCHFLAGS="-arch x86_64" gem install tiny_tds
Run Code Online (Sandbox Code Playgroud)

原因是在宝石建造过程中,mkmf将尝试寻找32位版本的freetds,这是不可用的.错误信息中mkmf.log说:

ld: warning: ignoring file /usr/local/lib/libsybdb.dylib, file was built for x86_64 which is not the architecture being linked (i386): /usr/local/lib/libsybdb.dylib
Undefined symbols for architecture i386:
  "_tdsdbopen", referenced from:
      _t in conftest-a13287.o
ld: symbol(s) not found for architecture i386
Run Code Online (Sandbox Code Playgroud)


nac*_*bar 5

正如我在Homebrew/TinyTDS/FreeTDS 捆绑错误中发布的那样,除此之外brew install freetds,您可能还需要配置捆绑器以了解在哪里可以找到 freetds。

例如(取决于自制程序安装 freetds 的确切位置):

bundle config set --global build.tiny_tds --with-freetds-dir=/opt/homebrew/Cellar/freetds/1.3.3
Run Code Online (Sandbox Code Playgroud)