gem install json завершается неудачно с переопределением структуры timezone/timespec
Я на Windows с Ruby 1.9.3 с DevKit (все 32-разрядные на Win 7 64-разрядных). Сейчас я пытаюсь установить рельсы, но получаю ошибку из комплекта. Если я попытаюсь запустить (на что жаловался комплект)
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
Любая идея?
2 ответа
Ruby 1.9.3 был скомпилирован с GCC 4.5.2, который является DevKit 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
(и 64-битная версия для 64-битного Ruby)
Я добавил пояснения на страницу загрузки RubyInstaller по этому поводу.
надеюсь, это поможет
Вы можете открыть "win32.h" в каталоге include для вашей версии ruby.
Затем закомментируйте строки, в которых объявлены функции "clock_gettime" и "clock_getres".