Yosemite - SQLite3 gem安装错误 - 不支持C扩展

时间:2015-08-09 11:50:34

标签: ruby sqlite osx-yosemite

我想在一个jruby项目中使用SQLite3。

gem install SQLite3

命令失败并带有

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

    /Users/h1k3n/.rvm/rubies/jruby-9.0.0.0/bin/jruby -r ./siteconf20150809-4559-7o84f5.rb extconf.rb
NotImplementedError: C extensions are not supported
    <top> at /Users/h1k3n/.rvm/rubies/jruby-9.0.0.0/lib/ruby/stdlib/mkmf.rb:1
  require at org/jruby/RubyKernel.java:940
   (root) at /Users/h1k3n/.rvm/rubies/jruby-9.0.0.0/lib/ruby/stdlib/rubygems/core_ext/kernel_require.rb:1
    <top> at extconf.rb:3

extconf failed, exit code 1

Gem files will remain installed in /Users/h1k3n/.rvm/gems/jruby-9.0.0.0/gems/sqlite3-1.3.10 for inspection.
Results logged to /Users/h1k3n/.rvm/gems/jruby-9.0.0.0/extensions/universal-java-1.8/2.2.0/sqlite3-1.3.10/gem_make.out

gcc版

which gcc => /usr/bin/gcc

尝试安装SQLite3

brew instal SQLite3 => Warning: sqlite-3.8.11 already installed

安装了SQLite3版本

which SQLite3 => ~/Android/sdk/platform-tools/sqlite3

我认为这是罪魁祸首。它可能指向Android版本的SQLite3而不是系统版本,这就是它无法构建原生扩展的原因。

1 个答案:

答案 0 :(得分:1)

您似乎正在使用JRuby,而不是标准的Ruby实现Ruby MRI

SQLite3 gem依赖于Ruby C扩展,但与标准实现不同,JRuby does not support Ruby C extensions

  

1.6之前的JRuby版本不支持Ruby C扩展,即使在1.6中,仍然支持#34;在开发中#34;并考虑实验。从1.7开始,它已被禁用,可能会be removed

上面的文章列出了对替代宝石的建议,包括针对SQLite3的建议。