在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。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/18223.html