gem install json失败,重新定义了struct timezone / timespec

我在Windows上使用带有DevKit的Ruby 1.9.3(Win 7 64位上的所有32位)。 现在我尝试安装rails,但是从bundle中获取错误。 如果我试图运行(什么捆绑抱怨)

gem install json 

我收到以下错误消息:

 D:\RubyTest>gem install json Temporarily enhancing PATH to include DevKit... Building native extensions. This could take a while... ERROR: Error installing json: ERROR: Failed to build gem native extension. D:/Ruby193/bin/ruby.exe extconf.rb creating Makefile make generating generator-i386-mingw32.def compiling generator.c In file included from d:/Ruby193/include/ruby-1.9.1/ruby/ruby.h:1381:0, from d:/Ruby193/include/ruby-1.9.1/ruby.h:32, from ../fbuffer/fbuffer.h:5, from generator.c:1: d:/Ruby193/include/ruby-1.9.1/ruby/missing.h:41:8: error: redefinition of 'struc t timespec' In file included from d:\ruby193\mingw\bin\../lib/gcc/i686-w64-mingw32/4.7.2/../ ../../../i686-w64-mingw32/include/process.h:12:0, from d:/Ruby193/include/ruby-1.9.1/ruby/win32.h:62, from d:/Ruby193/include/ruby-1.9.1/ruby/defines.h:223, from d:/Ruby193/include/ruby-1.9.1/ruby/ruby.h:67, from d:/Ruby193/include/ruby-1.9.1/ruby.h:32, from ../fbuffer/fbuffer.h:5, from generator.c:1: d:\ruby193\mingw\bin\../lib/gcc/i686-w64-mingw32/4.7.2/../../../../i686-w64-ming w32/include/sys/types.h:89:8: note: originally defined here In file included from d:/Ruby193/include/ruby-1.9.1/ruby/ruby.h:1381:0, from d:/Ruby193/include/ruby-1.9.1/ruby.h:32, from ../fbuffer/fbuffer.h:5, from generator.c:1: d:/Ruby193/include/ruby-1.9.1/ruby/missing.h:48:8: error: redefinition of 'struc t timezone' In file included from d:/Ruby193/include/ruby-1.9.1/ruby/win32.h:63:0, from d:/Ruby193/include/ruby-1.9.1/ruby/defines.h:223, from d:/Ruby193/include/ruby-1.9.1/ruby/ruby.h:67, from d:/Ruby193/include/ruby-1.9.1/ruby.h:32, from ../fbuffer/fbuffer.h:5, from generator.c:1: d:\ruby193\mingw\bin\../lib/gcc/i686-w64-mingw32/4.7.2/../../../../i686-w64-ming w32/include/time.h:260:8: note: originally defined here make: *** [generator.o] Error 1 Gem files will remain installed in D:/Ruby193/lib/ruby/gems/1.9.1/gems/json-1.7. 7 for inspection. Results logged to D:/Ruby193/lib/ruby/gems/1.9.1/gems/json-1.7.7/ext/json/ext/ge nerator/gem_make.out 

任何的想法?

Ruby 1.9.3是用GCC 4.5.2编译的,它是DevInRit DevKit-tdm-32-4.5.2-20111229-1559-sfx.exe可从RubyInstaller的下载页面获得

您下载了较新的DevKits, 它只与Ruby 2.0.0版本兼容,如RubyInstaller声明中所示。

澄清:

  • Ruby 1.8.7: tdm-32-4.5.2
  • Ruby 1.9.2: tdm-32-4.5.2
  • Ruby 1.9.3: tdm-32-4.5.2
  • Ruby 2.0.0: mingw64-32-4.7.2 (和mingw64-32-4.7.2版本的mingw64-32-4.7.2 Ruby)

我已经向RubyInstaller下载页面添加了一个关于此的说明。

希望有所帮助

您可以在ruby版本的include目录中打开“win32.h”。

然后注释掉声明“clock_gettime”“clock_getres”函数的行。