无法`gem install tiny_tds` OS X Mavericks

时间:2014-06-24 19:12:33

标签: 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()...否


自制

即使在

之后也会出现上述错误
  

$ brew install 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

研究

2 个答案:

答案 0 :(得分:21)

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

$ brew install freetds
$ sudo ARCHFLAGS="-arch x86_64" gem install tiny_tds

原因是在宝石建造过程中,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

答案 1 :(得分:2)

解决方案

只需将/opt/chef/embedded/bin添加到我的$PATH

即可解决此问题
  

$ sudo nano~ / .bashrc


更改后的文件内容

  

export PATH =“/ opt / chef / embedded / bin:$ PATH:$ HOME / .rvm / bin”#将RVM添加到PATH以进行脚本编写


更新$PATH

  

$ source~ / .bashrc


安装gem(确保使用上述方法之一安装freetds

  

$ sudo gem install tiny_tds


特别注意:这假设您已安装厨师

  

$ curl -L https://www.opscode.com/chef/install.sh | sudo bash

参考:

显然,安装命令如下:

  

$ sudo gem install tiny_tds - --with-freetds-include = / usr / local / freetds / include --with-iconv-include = / opt / chef / embedded / include --with-freetds-lib =的/ usr /本地/ freetds的/ lib中