Windows 下编译 Native Gem 的一些经验

3 条评论 , 6 次修正,7872 次阅读,最后更新于 2012年06月24日

#Windows 下编译 Native Gem 的一些经验 Windows 平台下喜欢捣鼓 Ruby 的同学也不少,有时会遇到 Native Gem 编译不过的情况,我这里有一些经验,希望能对大家有些帮助。也许有同学会问,为什么在 Windows 下搞这个?这个嘛,原因很多。;)

##几点经验

  1. 用 RubyInstaller 来装 Ruby 环境。
  2. 配置好 Devkit,这一步很重要,编译 Native Gem 就靠它了。
  3. 对于单纯的 Native Gem,比如说是某些 Gem 为了性能,不用 Ruby 写,而用 C 写,只用到了 Ruby 的 C 接口,这样的 Gem 不需要担心,Devkit 会很顺利的编译通过。
  4. 对于使用了其他开源库的 Gem,该开源库也有对应的 Windows 版(换句话说是 Windows 下该库能编译并使用)。那么这个 Gem 也能编译,但是需要配置一下 CPATHLIBRARY_PATH
  5. 对于依赖于系统特性的 Gem,比如使用 Linux 的 epoll,或使用了 Mac OS X 的 fsevent,那么这个 Gem 在 Windows 下是不能编译通过的。

##实战

###编译 RMagick RMagick 这个 Gem,它依赖于 ImageMagick,而 ImageMagick 是有 Windows 版的,也有 SDK。

  1. 安装 ImageMagick。这一步没有特殊的,记得安装时,把 SDK 勾选上。

  2. 在命令行下设置CPATHLIBRARY_PATH。 set CPATH=d:\ImageMagick-6.5.6-Q8\include set LIBRARY_PATH=d:\ImageMagick-6.5.6-Q8\lib

  3. gem install rmagick --platform=ruby

###编译 typhoeus 参见这里

###编译 pg - the Ruby interface to the {PostgreSQL RDBMS}[http://www.postgresql.org/] 以下步骤在 Windows 7, RailsInstaller 2.1.0.exe 环境,安装 pg 0.14.0 时通过。

  1. 手工将 C:\Program Files\PostgreSQL\9.1\bin 加入 PATH 环境变量
  2. gem install pg -- --with-pg-dir=c:/progra~1/postgr~1/9.

##总结 在 Windows 下 Ruby 环境的搭建其实也是比较方便的。遇到的主要问题就是编译 Native Gem,而编译 Native Gem 在 Windows 下也不是很困难,只要不是碰到严重依赖系统特性的 Gem 就好。