【问题标题】:Failed to build native gem extension sqlite3无法构建原生 gem 扩展 sqlite3
【发布时间】:2014-10-13 19:08:37
【问题描述】:

我正在尝试使用gem install sqlite3-ruby -v x.x.x 在 Cygwin 上安装 sqlite3-ruby,但出现以下错误:

Building native extensions.  This could take a while...
ERROR:  Error installing sqlite3-ruby:
    ERROR: Failed to build gem native extension.

/usr/bin/ruby.exe extconf.rb
checking for fdatasync() in -lrt... *** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

有谁知道如何在 Cygwin 上为 Ruby on Rails 安装 sqlite3。据我了解,SQLite RubyGem 实际上不是*Ruby*Gem,它是“*C*Gem”,IOW 它是用 C 编写的。这意味着它必须在安装时编译并链接到 Ruby 解释器,有什么帮助吗?

【问题讨论】:

  • 你说你正在使用-v x.x.x。您应该确保该版本包含 Windows 版本。例如,我的机器上有sqlite 3 1.3.9 x86-mingw32。我用gem install sqlite3
  • 我尝试安装的每个 sqlite3-ruby gem 都得到相同的ERROR: Failed to build gem native extension.

标签: ruby-on-rails ruby sqlite


【解决方案1】:

所以这不是一个完整的解决方案,因为我没有方便的 windows 框和 cygwin,但错误消息表明找不到 linux 实用程序 fdatasync。

工具 linux 手册页可以在这里找到 http://linux.die.net/man/2/fdatasync

也许会查明您是否正确安装了 fdatasync,然后重试。

【讨论】:

  • 有没有可以用来检查 fdatasync 是否安装正确的命令?
【解决方案2】:

我刚刚遇到了这个问题——我第一次想安装一个 Ruby gem 在我的新 Cygwin 64 位系统上。

据我了解,SQLite RubyGem 实际上不是 RubyGem,它是 "CGem", IOW 它是用 C 编写的。这意味着它必须被编译和链接 安装到 Ruby 解释器。

Cygwin 实际上提供了一个预编译包,它安装了sqlite3 gem 文件,包括 sqlite3_native.so 链接库文件。的名字 该软件包是ruby-sqlite3,您可以使用Cygwin 的Setup.exe. 安装它 我个人喜欢用apt-cyg 在可能的情况下(并非总是),所以我使用以下方式安装了软件包:

apt-cyg install ruby-sqlite3

这个包安装了适当的gem文件,可以通过运行看到 cygcheck -l ruby-sqlite3:

/usr/lib/gems/ruby/2.0.0/sqlite3-1.3.9/gem.build_complete
/usr/lib/gems/ruby/2.0.0/sqlite3-1.3.9/sqlite3/sqlite3_native.so
/usr/share/gems/gems/sqlite3-1.3.9/API_CHANGES.rdoc
/usr/share/gems/gems/sqlite3-1.3.9/ChangeLog.cvs
/usr/share/gems/gems/sqlite3-1.3.9/CHANGELOG.rdoc
/usr/share/gems/gems/sqlite3-1.3.9/faq/faq.rb
/usr/share/gems/gems/sqlite3-1.3.9/faq/faq.yml
/usr/share/gems/gems/sqlite3-1.3.9/Gemfile
/usr/share/gems/gems/sqlite3-1.3.9/lib/sqlite3/constants.rb
/usr/share/gems/gems/sqlite3-1.3.9/lib/sqlite3/database.rb
/usr/share/gems/gems/sqlite3-1.3.9/lib/sqlite3/errors.rb
/usr/share/gems/gems/sqlite3-1.3.9/lib/sqlite3/pragmas.rb
/usr/share/gems/gems/sqlite3-1.3.9/lib/sqlite3/resultset.rb
/usr/share/gems/gems/sqlite3-1.3.9/lib/sqlite3/statement.rb
/usr/share/gems/gems/sqlite3-1.3.9/lib/sqlite3/translator.rb
/usr/share/gems/gems/sqlite3-1.3.9/lib/sqlite3/value.rb
/usr/share/gems/gems/sqlite3-1.3.9/lib/sqlite3/version.rb
/usr/share/gems/gems/sqlite3-1.3.9/lib/sqlite3.rb
/usr/share/gems/gems/sqlite3-1.3.9/LICENSE
/usr/share/gems/gems/sqlite3-1.3.9/Manifest.txt
/usr/share/gems/gems/sqlite3-1.3.9/README.rdoc
/usr/share/gems/gems/sqlite3-1.3.9/tasks/faq.rake
/usr/share/gems/gems/sqlite3-1.3.9/tasks/gem.rake
/usr/share/gems/gems/sqlite3-1.3.9/tasks/native.rake
/usr/share/gems/gems/sqlite3-1.3.9/tasks/vendor_sqlite3

【讨论】:

    猜你喜欢
    • 2010-09-07
    • 2021-04-19
    • 1970-01-01
    • 2015-04-11
    • 2015-07-20
    • 2015-06-18
    • 1970-01-01
    • 2016-03-08
    相关资源
    最近更新 更多