无法`gem安装tiny_tds` OS X Mavericks[英] Unable to `gem install tiny_tds` OS X Mavericks

本文是小编为大家收集整理的关于无法`gem安装tiny_tds` OS X Mavericks的处理方法,想解了无法`gem安装tiny_tds` OS X Mavericks的问题怎么解决?无法`gem安装tiny_tds` OS X Mavericks问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

错误

<块引用>

$ 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

$ 制作

$ sudo make install

<小时>

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

  • libsybdb.so

相反,我有以下文件:

  • libsybdb.a
  • libsybdb.dylib
  • libsybdb.la
<小时>

研究

推荐答案

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

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

原因是在gem构建过程中,mkmf会尝试寻找freetds的32位版本,但不可用.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

本文地址:https://www.itbaoku.cn/post/786783.html