如何安装json gem - 无法构建gem native扩展(mac 10.10)

时间:2015-04-11 13:00:12

标签: ruby-on-rails ruby json xcode macos

操作系统:Mac OS X 10.10.3 XCode:安装了命令行工具的最新版本(版本6.3)Rails:版本4.2.1 Ruby:版本2.2.1

我正在尝试为我正在处理的项目生成路由(定期执行此操作),当我收到错误消息时,建议我执行捆绑安装和捆绑exec。我做了,这一次,在编译JSON Gem(版本1.7.7)时,这个过程中断了。

对StackOverflow进行一些研究,建议更新Xcode的命令行工具,我做了,但这并没有解决问题。

我尝试单独安装JSON版本1.7.7,但它失败了,告诉我要查找错误日志:

/Users/zwb/.rvm/rubies/ruby-2.2.1/bin/ruby -r ./siteconf20150411-36070-1t083xl.rb extconf.rb
creating Makefile

make "DESTDIR=" clean

make "DESTDIR="
compiling generator.c
In file included from generator.c:1:
./../fbuffer/fbuffer.h:175:47: error: too few arguments provided to function-like macro invocation
    VALUE result = rb_str_new(FBUFFER_PAIR(fb));
                                              ^
/Users/zwb/.rvm/rubies/ruby-2.2.1/include/ruby-2.2.0/ruby/intern.h:793:9: note: macro 'rb_str_new' defined here
#define rb_str_new(str, len) __extension__ (    \
        ^
In file included from generator.c:1:
./../fbuffer/fbuffer.h:175:11: warning: incompatible pointer to integer conversion initializing 'VALUE' (aka 'unsigned long') with an expression of type 'VALUE (const char *, long)' [-Wint-conversion]
    VALUE result = rb_str_new(FBUFFER_PAIR(fb));
          ^        ~~~~~~~~~~
1 warning and 1 error generated.
make: *** [generator.o] Error 1

make failed, exit code 2

5 个答案:

答案 0 :(得分:63)

很遗憾,JSON-1.7.7(以及1.8.1)与Ruby-2.2.x是incompatible。当您使用Ruby-2.2.1时,它将不适合您。

您有两种选择:

  1. 将您的json gem更新为1.8.2版本。 - 优先
  2. 修改ruby-2.2.1/ext/json/fbuffer/fbuffer.h文件,并将问题代码替换为VALUE result = rb_str_new(FBUFFER_PTR(fb), FBUFFER_LEN(fb));。查看here了解详情

答案 1 :(得分:52)

如果您使用的是Ruby 2.2.0或更高版本,则json gem将无法正确编译。您可以通过发出bundle update json

来解决此问题

答案 2 :(得分:0)

gem install json -v'1.8.2'为我工作。

答案 3 :(得分:0)

我也遇到了这个问题,这里没有任何建议的解决方法解决了它。

我只能通过手动重新下载并重新安装适当版本的Xcode命令行工具来解决它:

https://developer.apple.com/download/more/?name=command%20line%20tools

答案 4 :(得分:-1)

这对我有用,因为我偶然下载了基本的Ruby。

1

安装Ruby"开发套件"在这里:http://rubyinstaller.org/downloads/ 单击自解压缩文件,然后在此处解压缩:

C:\ RubyDevKit

(或其他地方,但我在其他目录中遇到问题)

2

打开cmd(终端): cd C:\RubyDevKit ruby dk.rb init ruby dk.rb install

来源:http://jekyll-windows.juthilo.com/1-ruby-and-devkit/