$ 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
答案 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中