2015-12-27 3 views
0

связанный с этим вопрос: ERROR: Failed to build gem native extensionПолучение Ошибка при попытке установить JSON в Ruby On Rails

Я пытаюсь сделать рубин на рельсах (рубин 2.0.0p647 (2015-08-18) [x64-mingw32]) для работы в моей системе. Я бегу Windows, 8.1 (64 бит)

Установка рубин и рельсов идет гладко, но когда я бегу rails new blog я получаю следующее сообщение об ошибке:

 Installing json 1.8.3 with native extensions 

     Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension 
     . 
     C:/Ruby200-x64/bin/ruby.exe extconf.rb 
    creating Makefile 

    make "DESTDIR=" 
    generating generator-x64-mingw32.def 
    compiling generator.c 
    linking shared-object json/ext/generator.so 
    c:/ruby200-x64/mingw64/mingw64/bin/../lib64/gcc/x86_64-w64-mingw32/4.8.3/../../. 
    ./../x86_64-w64-mingw32/bin/ld.exe: cannot find -lgcc_s 
    c:/ruby200-x64/mingw64/mingw64/bin/../lib64/gcc/x86_64-w64-mingw32/4.8.3/../../. 
    ./../x86_64-w64-mingw32/bin/ld.exe: cannot find -lgcc_s 
    collect2.exe: error: ld returned 1 exit status 
    make: *** [generator.so] Error 1 
Gem files will remain installed in C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/json- 
1.8.3 for inspection. 
Results logged to C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/json-1.8.3/ext/json/ex 
t/generator/gem_make.out 
Using minitest 5.8.3 
Using thread_safe 0.3.5 
Using builder 3.2.2 
Using erubis 2.7.0 
Using mini_portile2 2.0.0 
Using rack 1.6.4 
Using mime-types 2.99 
Using arel 6.0.3 
Installing debug_inspector 0.0.2 with native extensions 

Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension 
. 

Я уже пробовал устанавливать рубин и тому комплект разработки 3 раза (с разными версиями ruby) Я продолжаю получать ту же ошибку.

Я пробовал решение в вопросе выше.

Я получаю очень похожую ошибку:

C:\Ruby200-x64>gem install --local json-1.8.3.gem 
Temporarily enhancing PATH to include DevKit... 
Building native extensions. This could take a while... 
ERROR: Error installing json-1.8.3.gem: 
     ERROR: Failed to build gem native extension. 

    C:/Ruby200-x64/bin/ruby.exe extconf.rb 
creating Makefile 

Я попытался переустановить рубин с другой версией рубинового (новейший) , а также устанавливать обе версии x86 рубина и комплекта средств разработки, которые ничего не сделал для меня.

+0

KelsyDH собрать отличный документ на тему создания окна Windows, для разработки RoR: https://gist.github.com/KelseyDH/11198922. Когда я настраивал свою машину для Windows, Ruby 1.9.3 была самой новой версией, которая была стабильной в Windows. Это было около года назад. Я не знаю, изменилось ли это. – Elvn

+0

только для того, чтобы быть понятным, что это не только родные расширения, которые терпят неудачу. debug_inspector 0.0.2 также не удается построить сразу после и после byebug 8.2.1 – Xitcod13

+0

Да. Окна. Ложные сбои, трудно отследить. Я бы посоветовал вам проверить с помощью одного из Rails (самой платформы) разработчиков на github и спросить, был ли RoR успешно установлен на Win 8 кем-либо. Удачи! – Elvn

ответ

0

Это не прямой ответ, потому что раньше у меня не было проблемы с JSON; Я расскажу вам о самой ошибке, хотя вы просто знаете, что происходит.


Всякий раз, когда вы устанавливаете gem на вашей системе, она нуждается в определенные файлы для запуска.

У большинства gems есть все необходимые файлы, но для некоторых из них нужны дополнительные. mysql2, rmagick и nokogiri некоторые из них.

gems, которым нужны дополнительные файлы, необходимо загрузить «зависимости» из вашей системы, чтобы помочь им правильно установить. Затем они составляют дополнительных файлов с c compiler. Это то, что означает building native extensions.

Когда вы устанавливаете любой драгоценный камень, Ruby смотрит в ext/extconf.rb, чтобы посмотреть, как скомпилировать дополнительные файлы. Этот extconf.rb имеет код компилятора, который зависит от добавляемых зависимостей. Поэтому ошибка всегда говорит extconf.rb failed

-

Вам нужен действительный C compiler (DevKit включает gcc) и делают программу (я считаю DevKit включает nmake). Запуск extconf.rb с Ruby должен использовать компилятор gcc в вашем PATH, чтобы создать Makefile.Запуск make на Makefile будет строить дополнительные зависимости драгоценного камня:

enter image description here

-

Наиболее распространенной формой этой ошибки для mysql2:

enter image description here

Исправление должен включать зависимости от вашей системы, ссылку на нее, а затем снова установить драгоценный камень. EG:

gem install mysql2 --platform=ruby -- --with-mysql-dir="c:/path/to/mysql" 

JSON

Кажется, что JSON только имеет C заголовки, которые должны быть собраны.

В этом случае я настоятельно рекомендую найти новый компилятор &, используя его вместо Devkit. Возможно, это не сработает, но я думаю, что ваш JSON нужно скомпилировать, а не иметь дополнительные зависимости.

Мы используем MingW для компиляции вещей в Windows.

Хорошо исх: https://stackoverflow.com/a/33593870/1143732

Вы можете скачать наш MingW64 here или download it yourself.

Установите его & Добавьте его в свою ПУТЬ. Он заменит Дэкит; он более прочный для компиляции драгоценных камней.

После того, как вы сделали это, перейдите в ruby\lib\ruby\gems\[version]\json...\ext

Тип ruby extconf.rb и посмотреть, что происходит. Если построить Makefile, тип make, а затем make install

Если нет, то отправлять обратно то, что вы нашли, и мы увидим, если она фиксируется

+0

, установив MingW, вы просто имели в виду распаковать его и объявить папку bin в путь? Я попытался следовать вашим указаниям, а ruby ​​extconf.rb создает Makefile. Сделать командные выходы: ничего не нужно делать. и сделать установки, устанавливающие библиотеки по умолчанию. Я все еще получаю ту же ошибку, когда я запускаю: rails новый блог. – Xitcod13

+0

Да, точно, вам нужно добавить корзину в путь. В extconf ничего нет? Можете ли вы опубликовать extconf, и я увижу, что он говорит: –

+0

extconf path: «C: \ Ruby200-x64 \ lib \ ruby ​​\ gems \ 2.0.0 \ gems \ json-1.8.3 \ ext \ json" content: require 'mkmf' create_makefile ('json') – Xitcod13

Смежные вопросы