【问题标题】:Getting Error when trying to install json in Ruby on Rails尝试在 Ruby on Rails 中安装 json 时出错
【发布时间】:2016-04-01 15:27:44
【问题描述】:

相关问题:ERROR: Failed to build gem native extension

我正在尝试在我的系统上制作 ruby​​ on rails (ruby 2.0.0p647 (2015-08-18) [x64-mingw32])。 我正在运行 Windows 8.1(64 位)

ruby 和 rails 的安装很顺利,但是当我运行 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
.

我已经尝试安装 ruby​​ 和开发工具包 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

我尝试使用不同的 ruby​​ 版本(最新版本)重新安装 ruby 以及安装 ruby​​ 的 x86 版本和对我没有任何帮助的开发工具包。

【问题讨论】:

  • KelsyDH 整理了一篇关于为 RoR 开发设置 Windows 框的优秀文档:gist.github.com/KelseyDH/11198922。当我设置我的 Windows 开发机器时,Ruby 1.9.3 是已知在 Windows 上稳定的最新版本。那是大约一年前的事了。不知道有没有变。
  • 需要明确的是,这不仅仅是失败的本地扩展。 debug_inspector 0.0.2 在 byebug 8.2.1 之后也无法立即构建
  • 是的。视窗。虚假故障,难以追查。我建议您与 github 上的一位 Rails(平台本身)开发人员联系,并询问是否有人在 Win 8 上成功安装了 RoR。祝你好运!

标签: ruby-on-rails json


【解决方案1】:

这不是一个直接的答案,因为我以前没有遇到过 JSON 的问题;不过,我会告诉你错误本身 - 让你知道发生了什么。


每当您在系统上安装gem 时,它都需要某些文件才能运行。

大多数gems 拥有他们需要的所有文件,但有些需要额外的文件。 mysql2,rmagick 和 nokogiri 就是其中的一些。

需要额外文件的gems 必须从您的系统加载“依赖项”以帮助它们正确安装。然后他们编译带有c compiler 的额外文件。这就是building native extensions 的意思。

当您安装任何 gem 时,Ruby 会查看 ext/extconf.rb 以查看如何编译额外的文件。这个extconf.rb 具有依赖于您添加的依赖项的编译器代码。这就是为什么错误总是说extconf.rb failed

--

你需要一个有效的C compiler(DevKit 包括gcc)和一个 make 程序(我相信 Devkit 包括nmake)。使用 Ruby 运行 extconf.rb 应该使用 PATH 中的 gcc 编译器来创建 Makefile。在 Makefile 上运行 make 将构建 gem 的额外依赖项:

--

此错误最常见的形式是mysql2:

解决方法是在您的系统上包含依赖项,链接到它,然后再次安装 gem。例如:

 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。

安装它并将其添加到您的 PATH 中。它将取代 Devkit;它更适合编译 gem。

完成后,转到您的ruby\lib\ruby\gems\[version]\json...\ext

输入ruby extconf.rb 看看会发生什么。如果它构建一个Makefile,输入make,然后输入make install

如果没有,请发回您找到的内容,我们会看看它是否得到修复

【讨论】:

  • 通过安装MingW,您只是说解压缩并将bin文件夹添加到路径吗?我已尝试按照您的指示进行操作,并且 ruby​​ extconf.rb 构建了一个 Makefile。 make 命令输出 make: 无事可做。并使安装输出安装默认库。运行时仍然出现同样的错误:rails new blog。
  • 是的,您需要将 bin 添加到路径中。 extconf里面什么都没有?你能把 extconf 贴出来,我看看是什么意思
  • extconf 路径:"C:\Ruby200-x64\lib\ruby\gems\2.0.0\gems\json-1.8.3\ext\json" 内容:需要'mkmf' create_makefile(' json')
  • mkfmf 说什么(应该在同一个目录下)?
  • mkmf.rb 位于 C:\Ruby200-x64\lib\ruby\2.0.0 目录中,无法发布。
猜你喜欢
  • 2023-01-19
  • 2021-11-12
  • 2011-12-10
  • 1970-01-01
  • 1970-01-01
  • 2012-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多