sqlite3-ruby gem:无法构buildgem原生扩展

更新:看看这个后续问题: 在Windows上的gem更新 – 是否坏了?


在Windows上,当我这样做:

gem install sqlite3-ruby 

我得到以下错误:

 Building native extensions. This could take a while... ERROR: Error installing sqlite3-ruby: ERROR: Failed to build gem native extension. c:/ruby/bin/ruby.exe extconf.rb install sqlite3-ruby --platform Win32 checking for fdatasync() in rt.lib... no checking for sqlite3.h... no nmake 'nmake' is not recognized as an internal or external command, operable program or batch file. Gem files will remain installed in c:/ruby/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.4 for inspection. Results logged to c:/ruby/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.4/ext/sqlite3_api/gem_make.out 

同样的事情发生在hpricotgem上 。 我似乎记得这些gem在<1.0gem上安装得很好,但是现在我在1.2.0上,事情变得棘手。

我也试过这个:

 gem install sqlite3-ruby --platform Win32 

不用说,这也不起作用(同样的错误)

有谁知道这里发生了什么,以及如何解决这个问题?


更新:看看这个后续问题: 在Windows上的gem更新 – 是否坏了?

Solutions Collecting From Web of "sqlite3-ruby gem:无法构buildgem原生扩展"

正如Nathan所言,这似乎与最新版本的sqlite3-ruby和hpricot gem似乎没有Windows版本有关。 下面是面对这种情况时要做的事情(注意,gem的名字是自动通配符的,所以你可以输入sql并获得所有以sql开头的gem列表):

 $ gem list --remote --all sqlite *** REMOTE GEMS *** sqlite (2.0.1, 2.0.0, 1.3.1, 1.3.0, 1.2.9.1, 1.2.0, 1.1.3, 1.1.2, 1.1.1, 1.1) sqlite-ruby (2.2.3, 2.2.2, 2.2.1, 2.2.0, 2.1.0, 2.0.3, 2.0.2) sqlite3-ruby (1.2.4, 1.2.3, 1.2.2, 1.2.1, 1.2.0, 1.1.0, 1.0.1, 1.0.0, 0.9.0, 0.6.0, 0.5.0) 

然后你可以选择你想要安装的版本:

 gem install sqlite3-ruby -v 1.2.3 

要成功安装hpricot,我这样做了:

 gem install hpricot -v 0.6 

烦人的是,做一个gem update尝试将gem update到他们最新的,破碎的Windows版本。 当更新例程遇到错误时,它会将整个过程抛出。 这里有一个(哈克)解决这个问题的方法。

那么,这个问题是一个宝石错误? 宝石是否应该自动检测平台并安装最新的兼容版本?

我在Ubuntu上遇到了同样的问题,这为我解决了这个问题:

http://newsgroups.derkeiler.com/Archive/Comp/comp.lang.ruby/2008-08/msg00339.html

有没有可能最新的版本尚未移植到Win32呢? 由于这个特定的gem确实具有绑定到编译的代码,所以需要一个特定于平台的gem。 如果我强制安装版本1.2.3而不是当前的1.2.4,平台特定的版本确实安装,但是当我允许gem尝试安装当前版本时,我得到通用的1.2.4版本(在宝石库文件夹,它缺少其他sqlite3-ruby文件夹名称中的-x86-mswin32后缀。

也许别人可以回答如何处理平台特定的宝石。 是否为每个平台上传单独的宝石,并且宝石软件会选择哪一个?

首先从sqlite.org( http://www.sqlite.org/download.html
下载 – >
预编译的二进制文件: sqlite-dll-win32-x86-3071700.zip
和源代码: sqlite-autoconf-3071700.tar.gz
然后解压为:

 -include --sqlite3.h --sqlite3ext.h -lib --shell.c --sqlite3.c --sqlite3.def --sqlite3.dll 

最后安装宝石像:

 gem install sqlite3 --platform=ruby -- --with-sqlite3-include=path\to\include --with-sqlite3-lib=path\to\lib --no-ri --no-rdoc 

祝你好运!

我也遇到了这个问题。 值得注意的是,1.2.3和1.2.4之间的差异并不显着。 这里是1.2.4。 发行说明:

发布名称:1.2.4

注意:此版本仅更新生成的C文件以反映对SWIG文件所做的兼容性更改。 二进制版本(例如Windows)不受影响,不需要更新。 一般来说,除非您使用1.8.6之前版本的Ruby,否则不需要此更新。 (来源: 1.2.4。发行说明 )

希望能帮助别人!

我在Windows上有同样的问题,我已经安装MinGW http://sourceforge.net/projects/mingw/files/Automated%20MinGW%20Installer/MinGW%205.1.6/MinGW-5.1.6.exe/download和问题走&#x4E86; :-)

C:> gem install hpricot成功安装hpricot-0.8.2-x86-mswin32安装gem安装hpricot-0.8.2-x86-mswin32的ri文档…安装hpricot-0.8.2-x86-mswin32的RDoc文档。 ..

C:> gem install ruby​​-postgres成功安装了ruby-postgres-0.7.1.2006.04.06-x86-mswin32安装了1个gem安装ri文档为ruby-postgres-0.7.1.2006.04.06-x86-mswin32 …安装RDoc文档红宝石的Postgres-0.7.1.2006.04.06 86 mswin32 …