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”函数的行。