在Windows上为Jekyll安装本机Ruby扩展

时间:2010-09-03 23:51:44

标签: ruby rubygems jekyll

我要在这里发疯,所以我只想问:

你到底如何在Windows上安装Ruby Gem Jekyll。

Jekyll依赖于fast-stemmer-1.0.0并且必须构建为本机扩展

我在RubyDevKit上找到了这个方便的指南,可以在Windows上安装一个“理智”的环境,但它运行正常,但是使用nmake构建二进制文件时,快速干扰器仍然一直在使用,并返回以下错误:< / p>

C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC>gem install jekyll
Temporarily enhancing PATH to include DevKit...
Building native extensions.  This could take a while...
ERROR:  Error installing jekyll:
        ERROR: Failed to build gem native extension.

C:/Ruby/bin/ruby.exe extconf.rb
creating Makefile

nmake

Microsoft (R) Program Maintenance Utility Version 10.00.30319.01
Copyright (C) Microsoft Corporation.  All rights reserved.

        cl -nologo -I. -IC:/Ruby/lib/ruby/1.8/i386-mswin32 -IC:/Ruby/lib/ruby/1.
8/i386-mswin32 -I. -MD -Zi -O2b2xg- -G6  -c -Tcporter.c
cl : Command line warning D9035 : option 'Og-' has been deprecated and will be r
emoved in a future release
cl : Command line warning D9002 : ignoring unknown option '-G6'
porter.c
porter.c(31) : fatal error C1083: Cannot open include file: 'stdlib.h': No such
file or directory
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 10.0
\VC\BIN\cl.EXE"' : return code '0x2'
Stop.


Gem files will remain installed in C:/Ruby/lib/ruby/gems/1.8/gems/fast-stemmer-1
.0.0 for inspection.
Results logged to C:/Ruby/lib/ruby/gems/1.8/gems/fast-stemmer-1.0.0/ext/gem_make
.out

我在C:\ Program Files(x86)\ Microsoft Visual Studio 10.0 \ VC \ bin中使用Visual Studio 2010附带的nmake,正如其他文章中所建议的那样。但它仍然无效。

我已经尝试从DevKit附带的MSYS shell运行gem安装,所以我在那时确实有Unix make,但我不知道如何指示Ruby使用make而不是nmake(并且阅读mkmf.rb也没有启发我)。它一直在使用nmake,并且因上述错误消息而失败了

对此的任何帮助将不胜感激!

更新 我终于意识到我没有通过RubyInstaller.org安装Ruby。我重新安装使用安装程序,现在使用DevKit构建jekyll工作正常。

感谢大家指出这一点!

2 个答案:

答案 0 :(得分:5)

您所遵循的说明存在混淆。创建RubyInstaller DevKit中的指令是为了支持使用RubyInstaller编译版本的Ruby安装扩展。

很明显,从您当前的目录(visual studio)和您使用基于mswin32的Ruby的gem安装的输出,它不适用于RubyInstaller或我们记录的DevKit。

请从RubyInstaller网站安装Ruby和DevKit,并按照中的说明操作,避免与Visual Studio混合

答案 1 :(得分:1)

mswin32来自哪里?您是否将DevKit与MRI的mswin32端口一起使用? DevKit仅适用于MRI和YARV的当前MinGW端口,它不适用于mswin32端口(BTW,已经过时了很长一段时间)。

如果你使用mswin32端口,你或多或少都是你自己的。特别是,您必须使用Microsoft Visual C ++ 6.0,因为这是编译mswin32端口的内容,并且不保证Visual C ++的更高版本与二进制兼容。 Visual C ++ 10.0(您似乎正在使用它)不起作用。尝试通过明确调用gem install --platform=mswin32 fast-stemmer甚至gem install --platform=x86-mswin32-60 fast-stemmer来强制执行该平台。这样,如果维护者提供了预编译版本,则无需自行编译。

如果你使用mswin32端口而不是MinGW端口,请尝试显式调用gem install --platform=ruby fast-stemmer。如果这没有帮助,请尝试gem install --platform=x86-mingw32 fast-stemmer