Rails sqlite3.rb:6:in `require': cannot load such file -- sqlite3/sqlite3_native 错误怎么解决

shangchen · March 01, 2014 · Last by guodongivy replied at September 06, 2019 · 7554 hits

换了 ruby 2.0, rails 4.0 报错信息 sqlite3.rb:6:in `require': cannot load such file -- sqlite3/sqlite3_native 看了下 sqlite3.rb:6:

support multiple ruby version (fat binaries under windows)

begin RUBY_VERSION =~ /(\d+.\d+)/ require "sqlite3/#{$1}/sqlite3_native" rescue LoadError require 'sqlite3/sqlite3_native' end

sqlite3\目录下面只有 1.8 和 1.9 版本的 sqlite3_native 文件

这问题该怎么解决呢?

换类 unix 系统可能会好点,能将精力放在开发上,而不是环境搭建上。

这个因为缺少 sqlite3/sqlite_native.so导致的问题,
我最近找到了解决办法
在window10 安装ruby2.5.2-x64版本

1. https://rubyinstaller.org/downloads/ 下载 ruby版本,我是用的是最新版本2.5.2
首先安装ruby版本 一步步安装 最后 不要快安装完成时不要勾选 ridk install选项,因为从命令行下载太慢,单独下载安装
2.安装编译环境
  步骤:
  去 http://www.mys2.org/ 下载  http://repo.msys2.org/distrib/x86_64/msys2-x86_64-20161025.exe
  然后一步步安装
  安装完成后 关闭即可。
3.打开命令行 运行 ridk install 

输入数字3 剩下的不用管了,自己下载mingw源码包然后生成环境。
tip:可以测试mingw环境 cmd->ridk enable->gcc -v

4.接下来解决sqlite3/sqlite_native.so问题(github中sqlite3-ruby有编译介绍)

5.第1步骤 打开命令行 输入 gem install sqlite3
  第二步骤 进入 sqlite3 gem路径
cd C:\Ruby25-x64\lib\ruby\gems\2.5.0\gems\sqlite3-1.3.13-x64-mingw32
 开启mingw编译环境 ridk enable
然后 ruby setup.rb config
        ruby setup.rb setup
        ruby setup.rb  install

然后就可以了
测试  irb > require "sqlite3"   =>true
安装 rails
gem install rails

rails new blog

cd blog

rails s

打开浏览器 输入 localhost:3000/

至此结束。

我拷贝了ruby官方api文档 放置在 https://iwetuan.shop 目前网站空闲

sqlite3 github
https://github.com/sparklemotion/sqlite3-ruby

粘贴我的过程

C:\Users\haitun\Desktop\wechat\df>rails s
Could not find rake-12.3.1 in any of the sources
Run `bundle install` to install missing gems.

C:\Users\haitun\Desktop\wechat\df>rails install
Could not find rake-12.3.1 in any of the sources
Run `bundle install` to install missing gems.

C:\Users\haitun\Desktop\wechat\df>bundle install
Fetching gem metadata from https://gems.ruby-china.org/..........
Fetching rake 12.3.1
Installing rake 12.3.1
Using concurrent-ruby 1.0.5
Using i18n 0.9.5
Fetching minitest 5.11.3
Installing minitest 5.11.3
Using thread_safe 0.3.6
Using tzinfo 1.2.5
Using activesupport 5.1.5
Using builder 3.2.3
Using erubi 1.7.1
Using mini_portile2 2.3.0
Using nokogiri 1.8.2 (x64-mingw32)
Using rails-dom-testing 2.0.3
Using crass 1.0.3
Using loofah 2.2.2
Using rails-html-sanitizer 1.0.4
Using actionview 5.1.5
Using rack 2.0.4
Using rack-test 0.8.3
Using actionpack 5.1.5
Using nio4r 2.3.0
Using websocket-extensions 0.1.3
Using websocket-driver 0.6.5
Using actioncable 5.1.5
Using globalid 0.4.1
Using activejob 5.1.5
Using mini_mime 1.0.0
Using mail 2.7.0
Using actionmailer 5.1.5
Using activemodel 5.1.5
Using arel 8.0.0
Using activerecord 5.1.5
Fetching public_suffix 3.0.2
Installing public_suffix 3.0.2
Fetching addressable 2.5.2
Installing addressable 2.5.2
Fetching bindex 0.5.0
Installing bindex 0.5.0 with native extensions
Using bundler 1.16.1
Fetching byebug 10.0.1
Installing byebug 10.0.1 with native extensions
Fetching xpath 3.0.0
Installing xpath 3.0.0
Fetching capybara 2.18.0
Installing capybara 2.18.0
Fetching ffi 1.9.23 (x64-mingw32)
Installing ffi 1.9.23 (x64-mingw32)
Fetching childprocess 0.9.0
Installing childprocess 0.9.0
Fetching coffee-script-source 1.12.2
Installing coffee-script-source 1.12.2
Fetching execjs 2.7.0
Installing execjs 2.7.0
Fetching coffee-script 2.4.1
Installing coffee-script 2.4.1
Using method_source 0.9.0
Using thor 0.20.0
Using railties 5.1.5
Fetching coffee-rails 4.2.2
Installing coffee-rails 4.2.2
Fetching multi_json 1.13.1
Installing multi_json 1.13.1
Fetching jbuilder 2.7.0
Installing jbuilder 2.7.0
Fetching puma 3.11.3
Installing puma 3.11.3 with native extensions
Using sprockets 3.7.1
Using sprockets-rails 3.2.1
Using rails 5.1.5
Fetching rb-fsevent 0.10.3
Installing rb-fsevent 0.10.3
Fetching rb-inotify 0.9.10
Installing rb-inotify 0.9.10
Fetching rubyzip 1.2.1
Installing rubyzip 1.2.1
Fetching sass-listen 4.0.0
Installing sass-listen 4.0.0
Fetching sass 3.5.6
Installing sass 3.5.6
Fetching tilt 2.0.8
Installing tilt 2.0.8
Fetching sass-rails 5.0.7
Installing sass-rails 5.0.7
Fetching selenium-webdriver 3.11.0
Installing selenium-webdriver 3.11.0
Fetching sqlite3 1.3.13 (x64-mingw32)
Installing sqlite3 1.3.13 (x64-mingw32)
Fetching turbolinks-source 5.1.0
Installing turbolinks-source 5.1.0
Fetching turbolinks 5.1.0
Installing turbolinks 5.1.0
Fetching tzinfo-data 1.2018.3
Installing tzinfo-data 1.2018.3
Fetching uglifier 4.1.8
Installing uglifier 4.1.8
Fetching web-console 3.5.1
Installing web-console 3.5.1
Bundle complete! 13 Gemfile dependencies, 67 gems now installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.

C:\Users\haitun\Desktop\wechat\df>rails s
Traceback (most recent call last):
        22: from bin/rails:4:in `<main>'
        21: from bin/rails:4:in `require'
        20: from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/railties-5.1.5/lib/rails/commands.rb:16:in `<top (required)>'
        19: from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/railties-5.1.5/lib/rails/command.rb:44:in `invoke'
        18: from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/railties-5.1.5/lib/rails/command/base.rb:63:in `perform'
        17: from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/thor-0.20.0/lib/thor.rb:387:in `dispatch'
        16: from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/thor-0.20.0/lib/thor/invocation.rb:126:in `invoke_command'
        15: from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/thor-0.20.0/lib/thor/command.rb:27:in `run'
        14: from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/railties-5.1.5/lib/rails/commands/server/server_command.rb:130:in `perform'
        13: from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/railties-5.1.5/lib/rails/commands/server/server_command.rb:130:in `tap'
        12: from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/railties-5.1.5/lib/rails/commands/server/server_command.rb:133:in `block in perform'
        11: from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/railties-5.1.5/lib/rails/commands/server/server_command.rb:133:in `require'
        10: from C:/Users/haitun/Desktop/wechat/df/config/application.rb:7:in `<top (required)>'
         9: from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/bundler-1.16.1/lib/bundler.rb:114:in `require'
         8: from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/bundler-1.16.1/lib/bundler/runtime.rb:65:in `require'
         7: from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/bundler-1.16.1/lib/bundler/runtime.rb:65:in `each'
         6: from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/bundler-1.16.1/lib/bundler/runtime.rb:76:in `block in require'
         5: from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/bundler-1.16.1/lib/bundler/runtime.rb:76:in `each'
         4: from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/bundler-1.16.1/lib/bundler/runtime.rb:81:in `block (2 levels) in require'
         3: from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/bundler-1.16.1/lib/bundler/runtime.rb:81:in `require'
         2: from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/sqlite3-1.3.13-x64-mingw32/lib/sqlite3.rb:2:in `<top (required)>'
         1: from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/sqlite3-1.3.13-x64-mingw32/lib/sqlite3.rb:6:in `rescue in <top (required)>'
C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/sqlite3-1.3.13-x64-mingw32/lib/sqlite3.rb:6:in `require': cannot load such file -- sqlite3/sqlite3_native (LoadError)

C:\Users\haitun\Desktop\wechat\df>ls
'ls' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

C:\Users\haitun\Desktop\wechat\df>cd C:\Ruby25-x64\lib\ruby\gems\2.5.0\gems\sqlite3-1.3.13-x64-mingw32

C:\Ruby25-x64\lib\ruby\gems\2.5.0\gems\sqlite3-1.3.13-x64-mingw32>
C:\Ruby25-x64\lib\ruby\gems\2.5.0\gems\sqlite3-1.3.13-x64-mingw32>
C:\Ruby25-x64\lib\ruby\gems\2.5.0\gems\sqlite3-1.3.13-x64-mingw32>
C:\Ruby25-x64\lib\ruby\gems\2.5.0\gems\sqlite3-1.3.13-x64-mingw32>
C:\Ruby25-x64\lib\ruby\gems\2.5.0\gems\sqlite3-1.3.13-x64-mingw32>ruby setup.rb config
---> lib
---> lib/sqlite3
---> lib/sqlite3/2.0
<--- lib/sqlite3/2.0
---> lib/sqlite3/2.1
<--- lib/sqlite3/2.1
---> lib/sqlite3/2.2
<--- lib/sqlite3/2.2
---> lib/sqlite3/2.3
<--- lib/sqlite3/2.3
---> lib/sqlite3/2.4
<--- lib/sqlite3/2.4
<--- lib/sqlite3
<--- lib
---> ext
---> ext/sqlite3
C:/Ruby25-x64/bin/ruby C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/sqlite3-1.3.13-x64-mingw32/ext/sqlite3/extconf.rb
checking for sqlite3.h... *** C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/sqlite3-1.3.13-x64-mingw32/ext/sqlite3/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.

Provided configuration options:
        --with-opt-dir
        --without-opt-dir
        --with-opt-include
        --without-opt-include=${opt-dir}/include
        --with-opt-lib
        --without-opt-lib=${opt-dir}/lib
        --with-make-prog
        --without-make-prog
        --srcdir=C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/sqlite3-1.3.13-x64-mingw32/ext/sqlite3
        --curdir
        --ruby=C:/Ruby25-x64/bin/$(RUBY_BASE_NAME)
        --with-sqlite3-config
        --without-sqlite3-config
        --with-pkg-config
        --without-pkg-config
        --with-sqlite3-dir
        --without-sqlite3-dir
        --with-sqlite3-include
        --without-sqlite3-include=${sqlite3-dir}/include
        --with-sqlite3-lib
        --without-sqlite3-lib=${sqlite3-dir}/lib
Traceback (most recent call last):
        11: from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/sqlite3-1.3.13-x64-mingw32/ext/sqlite3/extconf.rb:50:in `<main>'
        10: from C:/Ruby25-x64/lib/ruby/2.5.0/mkmf.rb:1149:in `find_header'
         9: from C:/Ruby25-x64/lib/ruby/2.5.0/mkmf.rb:946:in `checking_for'
         8: from C:/Ruby25-x64/lib/ruby/2.5.0/mkmf.rb:346:in `postpone'
         7: from C:/Ruby25-x64/lib/ruby/2.5.0/mkmf.rb:320:in `open'
         6: from C:/Ruby25-x64/lib/ruby/2.5.0/mkmf.rb:350:in `block in postpone'
         5: from C:/Ruby25-x64/lib/ruby/2.5.0/mkmf.rb:320:in `open'
         4: from C:/Ruby25-x64/lib/ruby/2.5.0/mkmf.rb:350:in `block (2 levels) in postpone'
         3: from C:/Ruby25-x64/lib/ruby/2.5.0/mkmf.rb:947:in `block in checking_for'
         2: from C:/Ruby25-x64/lib/ruby/2.5.0/mkmf.rb:1150:in `block in find_header'
         1: from C:/Ruby25-x64/lib/ruby/2.5.0/mkmf.rb:590:in `try_cpp'
C:/Ruby25-x64/lib/ruby/2.5.0/mkmf.rb:456:in `try_do': The compiler failed to generate an executable file. (RuntimeError)
You have to install development tools first.
'system C:/Ruby25-x64/bin/ruby C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/sqlite3-1.3.13-x64-mingw32/ext/sqlite3/extconf.rb ' failed
Try 'ruby setup.rb --help' for detailed usage.

C:\Ruby25-x64\lib\ruby\gems\2.5.0\gems\sqlite3-1.3.13-x64-mingw32>
C:\Ruby25-x64\lib\ruby\gems\2.5.0\gems\sqlite3-1.3.13-x64-mingw32>ridk enable

C:\Ruby25-x64\lib\ruby\gems\2.5.0\gems\sqlite3-1.3.13-x64-mingw32>set "RI_DEVKIT=C:\msys64"

C:\Ruby25-x64\lib\ruby\gems\2.5.0\gems\sqlite3-1.3.13-x64-mingw32>set "MSYSTEM=MINGW64"

C:\Ruby25-x64\lib\ruby\gems\2.5.0\gems\sqlite3-1.3.13-x64-mingw32>set "PKG_CONFIG_PATH=/mingw64/lib/pkgconfig:/mingw64/share/pkgconfig"

C:\Ruby25-x64\lib\ruby\gems\2.5.0\gems\sqlite3-1.3.13-x64-mingw32>set "ACLOCAL_PATH=/mingw64/share/aclocal:/usr/share/aclocal"

C:\Ruby25-x64\lib\ruby\gems\2.5.0\gems\sqlite3-1.3.13-x64-mingw32>set "MANPATH=/mingw64/share/man"

C:\Ruby25-x64\lib\ruby\gems\2.5.0\gems\sqlite3-1.3.13-x64-mingw32>set "MINGW_PACKAGE_PREFIX=mingw-w64-x86_64"

C:\Ruby25-x64\lib\ruby\gems\2.5.0\gems\sqlite3-1.3.13-x64-mingw32>set "LANG=zh_CN.UTF-8"

C:\Ruby25-x64\lib\ruby\gems\2.5.0\gems\sqlite3-1.3.13-x64-mingw32>set "PATH=C:\Ruby25-x64\bin;C:\msys64\mingw64\bin;C:\msys64\usr\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program Files\Git\cmd;C:\Program Files\CMake\bin;C:\Program Files\PuTTY\;C:\Program Files\MySQL\MySQL Server 5.7\bin;C:\Go\bin;C:\Users\haitun\AppData\Local\Programs\Python\Python36;C:\Users\haitun\AppData\Local\Programs\Python\Python36\Scripts;C:\Ruby25-x64\bin;C:\Users\haitun\AppData\Local\Microsoft\WindowsApps"

C:\Ruby25-x64\lib\ruby\gems\2.5.0\gems\sqlite3-1.3.13-x64-mingw32>ruby setup.rb config
---> lib
---> lib/sqlite3
---> lib/sqlite3/2.0
<--- lib/sqlite3/2.0
---> lib/sqlite3/2.1
<--- lib/sqlite3/2.1
---> lib/sqlite3/2.2
<--- lib/sqlite3/2.2
---> lib/sqlite3/2.3
<--- lib/sqlite3/2.3
---> lib/sqlite3/2.4
<--- lib/sqlite3/2.4
<--- lib/sqlite3
<--- lib
---> ext
---> ext/sqlite3
C:/Ruby25-x64/bin/ruby C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/sqlite3-1.3.13-x64-mingw32/ext/sqlite3/extconf.rb
checking for sqlite3.h... yes
checking for pthread_create() in -lpthread... yes
checking for sqlite3_libversion_number() in -lsqlite3... yes
checking for rb_proc_arity()... yes
checking for rb_integer_pack()... yes
checking for sqlite3_initialize()... yes
checking for sqlite3_backup_init()... yes
checking for sqlite3_column_database_name()... no
checking for sqlite3_enable_load_extension()... yes
checking for sqlite3_load_extension()... yes
checking for sqlite3_open_v2()... yes
checking for sqlite3_prepare_v2()... yes
checking for sqlite3_int64 in sqlite3.h... yes
checking for sqlite3_uint64 in sqlite3.h... yes
creating Makefile
<--- ext/sqlite3
<--- ext

C:\Ruby25-x64\lib\ruby\gems\2.5.0\gems\sqlite3-1.3.13-x64-mingw32>ruby setup.rb setup
---> lib
---> lib/sqlite3
---> lib/sqlite3/2.0
<--- lib/sqlite3/2.0
---> lib/sqlite3/2.1
<--- lib/sqlite3/2.1
---> lib/sqlite3/2.2
<--- lib/sqlite3/2.2
---> lib/sqlite3/2.3
<--- lib/sqlite3/2.3
---> lib/sqlite3/2.4
<--- lib/sqlite3/2.4
<--- lib/sqlite3
<--- lib
---> ext
---> ext/sqlite3
make
generating sqlite3_native-x64-mingw32.def
compiling backup.c
compiling database.c
compiling exception.c
compiling sqlite3.c
compiling statement.c
linking shared-object sqlite3/sqlite3_native.so
<--- ext/sqlite3
<--- ext

C:\Ruby25-x64\lib\ruby\gems\2.5.0\gems\sqlite3-1.3.13-x64-mingw32>ruby setup.rb install
---> lib
mkdir -p C:/Ruby25-x64/lib/ruby/site_ruby/2.5.0/
install sqlite3.rb C:/Ruby25-x64/lib/ruby/site_ruby/2.5.0/
---> lib/sqlite3
mkdir -p C:/Ruby25-x64/lib/ruby/site_ruby/2.5.0/sqlite3
install constants.rb C:/Ruby25-x64/lib/ruby/site_ruby/2.5.0/sqlite3
install database.rb C:/Ruby25-x64/lib/ruby/site_ruby/2.5.0/sqlite3
install errors.rb C:/Ruby25-x64/lib/ruby/site_ruby/2.5.0/sqlite3
install pragmas.rb C:/Ruby25-x64/lib/ruby/site_ruby/2.5.0/sqlite3
install resultset.rb C:/Ruby25-x64/lib/ruby/site_ruby/2.5.0/sqlite3
install statement.rb C:/Ruby25-x64/lib/ruby/site_ruby/2.5.0/sqlite3
install translator.rb C:/Ruby25-x64/lib/ruby/site_ruby/2.5.0/sqlite3
install value.rb C:/Ruby25-x64/lib/ruby/site_ruby/2.5.0/sqlite3
install version.rb C:/Ruby25-x64/lib/ruby/site_ruby/2.5.0/sqlite3
---> lib/sqlite3/2.0
mkdir -p C:/Ruby25-x64/lib/ruby/site_ruby/2.5.0/sqlite3/2.0
<--- lib/sqlite3/2.0
---> lib/sqlite3/2.1
mkdir -p C:/Ruby25-x64/lib/ruby/site_ruby/2.5.0/sqlite3/2.1
<--- lib/sqlite3/2.1
---> lib/sqlite3/2.2
mkdir -p C:/Ruby25-x64/lib/ruby/site_ruby/2.5.0/sqlite3/2.2
<--- lib/sqlite3/2.2
---> lib/sqlite3/2.3
mkdir -p C:/Ruby25-x64/lib/ruby/site_ruby/2.5.0/sqlite3/2.3
<--- lib/sqlite3/2.3
---> lib/sqlite3/2.4
mkdir -p C:/Ruby25-x64/lib/ruby/site_ruby/2.5.0/sqlite3/2.4
<--- lib/sqlite3/2.4
<--- lib/sqlite3
<--- lib
---> ext
---> ext/sqlite3
mkdir -p C:/Ruby25-x64/lib/ruby/site_ruby/2.5.0/x64-msvcrt/sqlite3
install sqlite3_native.so C:/Ruby25-x64/lib/ruby/site_ruby/2.5.0/x64-msvcrt/sqlite3
<--- ext/sqlite3
<--- ext

C:\Ruby25-x64\lib\ruby\gems\2.5.0\gems\sqlite3-1.3.13-x64-mingw32>









git issues on 25 Mar SQLite3 fat GEM for ruby 2.5 on Windows https://github.com/sparklemotion/sqlite3-ruby/issues/228

win10 成功 超级感谢

You need to Sign in before reply, if you don't have an account, please Sign up first.