当试图安装bson_ext时,我看到错误...安装json gem工作正常,这也需要构建原生扩展 - 我已经尝试了所有看到类似的问题没有好的答案
$ gem install bson_ext
Temporarily enhancing PATH to include DevKit...
Building native extensions. This could take a while...
ERROR: Error installing bson_ext:
ERROR: Failed to build gem native extension.
c:/Ruby193/bin/ruby.exe extconf.rb
checking for asprintf()... no
checking for ruby/st.h... yes
checking for ruby/regex.h... yes
checking for ruby/encoding.h... yes
creating Makefile
make
generating cbson-i386-mingw32.def
compiling bson_buffer.c
compiling cbson.c
cbson.c:25:23: fatal error: arpa/inet.h: No such file or directory
compilation terminated.
make: *** [cbson.o] Error 1
Gem files will remain installed in c:/Ruby193/lib/ruby/gems/1.9.1/gems/bson_ext-
1.11.1 for inspection.
Results logged to c:/Ruby193/lib/ruby/gems/1.9.1/gems/bson_ext-1.11.1/ext/cbson/
gem_make.out
$ gem install json
Temporarily enhancing PATH to include DevKit...
Building native extensions. This could take a while...
Successfully installed json-1.8.1
1 gem installed
Installing ri documentation for json-1.8.1...
Installing RDoc documentation for json-1.8.1...
答案 0 :(得分:9)
根据this post <arpa/inet.h>
不是Windows库,因此应使用winsock2.h
。
要更改此引用,我已完成以下**:
#include "<arpa/inet.h>"
#include winsock2.h
gem build bson_ext.gemspec
gem install bson_ext-1.11.1.gem --local
,现在应该成功安装gem。 **巨大的警告:我刚刚通过mongodb for rails教程,我没有任何可用的代码来测试它。虽然这消除了安装错误,但我无法确定此修复是否完整。此库引用是1.11.1版本的新增内容。如果安装版本1.10.2,则不会发生此问题(gem install bson_ext -v 1.10.2
)。我会留给你决定哪种解决方案对你更有意义。
编辑:基于github上的a change to the bson-ruby project,更好的解决方法是更改包含如下所示:
#ifdef _WIN32
#include <winsock2.h>
#else
#include <arpa/inet.h>
#endif
答案 1 :(得分:5)
在DevKit上编译时不需要该文件。
要防止此错误,只需在预期位置创建一个空文件即可。如果你的DevKit安装在C:\ DevKit中,那么该文件应该在C:\ DevKit \ mingw \ include \ arpa \ inet.h
这也应该修复其他本土宝石。原因是,通常来自arpa / inet.h的定义已经来自其他大多数时间自动包含的包含文件。
答案 2 :(得分:0)
我刚刚将我的宝石更新为旧版本(从2.4.6升级到2.3)并且有效。
答案 3 :(得分:0)
Use this command
gem update --system 2.3.0