Windows sqlite3 ruby gem:无法生成gem本机扩展

Windows sqlite3 ruby gem:无法生成gem本机扩展,windows,ruby,gem,Windows,Ruby,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 in

更新:查看以下后续问题:


在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
hpricot宝石也会发生同样的情况。我似乎记得这些gems在<1.0 gems上安装得很好,但现在我在1.2.0上,事情变得很糟糕

我也试过:

gem install sqlite3-ruby --platform Win32
不用说,这也不起作用(同样的错误)

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



更新:检查以下问题:

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


也许其他人可以回答gem如何处理特定于平台的gem。是否为每个平台上载了单独的gem,并且gem软件会选择下拉哪一个?

正如Nathan所建议的,这似乎与sqlite3 ruby和hpricot gem的最新版本似乎没有Windows版本有关。下面是w遇到这种情况时该怎么办(注意,gem的名称是自动通配符的,因此您可以只键入sql并获得以sql开头的所有gem的列表):

然后,您可以选择要安装的版本:

gem install sqlite3-ruby -v 1.2.3
为了成功安装hpricot,我执行了以下操作:

gem install hpricot -v 0.6
令人恼火的是,执行
gem更新
会尝试将gem更新到其在Windows上已损坏的最新版本。当更新例程遇到错误时,它会将您从整个过程中排除。此问题有一个(黑客)解决方案


那么,这个问题是gems中的一个错误吗?gems是否应该自动检测平台并安装最新的兼容版本?我也遇到了这个问题。值得一提的是,1.2.3和1.2.4之间的差异并不显著。以下是1.2.4。发行说明:

发布名称:1.2.4

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


希望这对其他人有帮助!

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


我在Windows上遇到了同样的问题,我已经安装了MinGW 问题已经过去了:-)

C:>gem安装hpricot 已成功安装hpricot-0.8.2-x86-mswin32 已安装1个gem 正在安装hpricot-0.8.2-x86-mswin32的ri文档。。。 正在安装hpricot-0.8.2-x86-mswin32的RDoc文档

C:>gem安装ruby postgres 已成功安装ruby-postgres-0.7.1.2006.04.06-x86-mswin32 已安装1个gem 正在为ruby-postgres-0.7.1.2006.04.06-x86-mswin32安装ri文档。。。 安装ruby-postgres-0.7.1.2006.04.06-x86-mswin32的RDoc文档…

首先从sqlite.org()开始安装 下载->
预编译二进制文件:
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

祝你好运

我(也)似乎需要libsqlite0dev(在libsqlite3dev之上)才能将gem安装到ubuntu10.04.1lts上。我还安装了一个libsqlite3ruby,但我不知道这是否有什么不同。我怀疑这个问题可能是gem中的一个bug,而不是整个gem系统。如果gem没有指定它是特定于平台的,那么gem系统可能会假定它是平台无关的gem,并尝试安装它。
gem install sqlite3 --platform=ruby -- --with-sqlite3-include=path\to\include  
 --with-sqlite3-lib=path\to\lib --no-ri --no-rdoc