在64位Windows+ruby2.0下安装MySQL2
Ruby on rails初体验系列文章:
1. 环境
Windows server 2008 64bit
Mysql server 5.6
Ruby 2.0 64bit
DevKit
2. 第一次安装
开始按照网上教程,安装了mysql2
gem install mysql2 — ‘–with-mysql-lib=”C:\Program Files\MySQL\MySQL Server 5.6\lib” –with-mysql-include=”C:\Program Files\MySQL\MySQL Server 5.6\include”‘
安装过程很顺利,暗自庆幸。。。
第一次运行,出LoadError:
C:/Ruby200-x64/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in `require
‘: 126: 找不到指定的模块。 – C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/mysql2-0.
3.13/lib/mysql2/mysql2.so (LoadError)
from C:/Ruby200-x64/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:4
5:in `require’
from C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/mysql2-0.3.13/lib/mysql2.rb
:8:in `’
from C:/Ruby200-x64/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:1
10:in `require’
from C:/Ruby200-x64/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:1
10:in `rescue in require’
from C:/Ruby200-x64/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:3
5:in `require’
from download.rb:6:in `’
到Mysql的安装目录,把libmysql.dll和libmysql.lib都拷贝到了Ruby的bin目录下,再运行(程序里用到了ActiveRecord),这次出了SegmentFault错误。。。。
3. 第二次安装
网上查了查,应该是这个问题导致的。按照这篇文章的内容,依次如下处理。
另外,出现segment fault的根本原因应该是默认的libmysql.lib和mingw64-gcc不兼容导致的。
3.1. 卸载刚装的Mysql2
> gem uninstall mysql2
Successfully uninstalled mysql2-0.3.13
3.2. 下载需要的工具
主要是gendef.exe,这个应用从https://structure-svm-map.googlecode.com/files/svm-map-win.zip下载
下载后从下面的文件夹找到这个文件,拷贝到devkit/mingw/bin下,我之所以考到这里,是因为dlltool.exe也在这里,都放到path里方便。
然后运行:
gendef.exe libmysql.dll
这条命令会生成libmysql.def文件。
生成这个libmysql.def文件之后,就可以生成新的lib了。
dlltool -v –dllname libmysql.dll –def libmysql.def –output-lib libmysql.lib
3.3. 再次安装mysql2
gem install mysql2 — ‘–with-mysql-lib=”C:\Program Files\MySQL\MySQL Server 5.6\lib” –with-mysql-include=”C:\Program Files\MySQL\MySQL Server 5.6\include”‘
3.4. 拷贝生成的libmysql.lib到ruby/bin文件夹
再次运行程序,OK。