bson_ext gem安装在macOS上失败 [英] bson_ext gem install fails on macOS

查看:91
本文介绍了bson_ext gem安装在macOS上失败的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我坚持使用1.5.1版本的安装bson_ext gem.我已经尝试了几乎所有在网络上找到的内容,但没有任何帮助. 我试图重新安装ruby,rvm等.

I'm stuck with install bson_ext gem with 1.5.1 version. I've tried almost everything what I found on web but nothing helps. I tried to reinstall ruby, rvm and so on.

我正在使用:

  • RVM
  • MacOs Catalina 10.15.6
  • 红宝石2.6.5

在安装捆绑软件后,我得到了这样的日志:

and after bundle install I got log like this:

Fetching bson_ext 1.5.1
Installing bson_ext 1.5.1 with native extensions
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    current directory: /Users/lukasz/.rvm/gems/ruby-2.6.5/gems/bson_ext-1.5.1/ext/cbson
/Users/lukasz/.rvm/rubies/ruby-2.6.5/bin/ruby -I /Users/lukasz/.rvm/rubies/ruby-2.6.5/lib/ruby/site_ruby/2.6.0 -r ./siteconf20201001-15946-1sze5ll.rb extconf.rb
checking for asprintf()... yes
checking for ruby/st.h... yes
checking for ruby/regex.h... yes
checking for ruby/encoding.h... yes
creating Makefile

current directory: /Users/lukasz/.rvm/gems/ruby-2.6.5/gems/bson_ext-1.5.1/ext/cbson
make "DESTDIR=" clean

current directory: /Users/lukasz/.rvm/gems/ruby-2.6.5/gems/bson_ext-1.5.1/ext/cbson
make "DESTDIR="
compiling bson_buffer.c
compiling cbson.c
cbson.c:118:36: warning: passing 'char *' to parameter of type 'const unsigned char *' converts between pointers to integer types with different sign [-Wpointer-sign]
    result_t status = check_string(RSTRING_PTR(string), RSTRING_LEN(string),
                                   ^~~~~~~~~~~~~~~~~~~
/Users/lukasz/.rvm/rubies/ruby-2.6.5/include/ruby-2.6.0/ruby/ruby.h:1003:5: note: expanded from macro 'RSTRING_PTR'
    (!(RBASIC(str)->flags & RSTRING_NOEMBED) ? \
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./encoding_helpers.h:26:44: note: passing argument to parameter 'string' here
result_t check_string(const unsigned char* string, const int length,
                                           ^
cbson.c:118:57: warning: implicit conversion loses integer precision: 'long' to 'int' [-Wshorten-64-to-32]
    result_t status = check_string(RSTRING_PTR(string), RSTRING_LEN(string),
                      ~~~~~~~~~~~~                      ^~~~~~~~~~~~~~~~~~~
/Users/lukasz/.rvm/rubies/ruby-2.6.5/include/ruby-2.6.0/ruby/ruby.h:1000:6: note: expanded from macro 'RSTRING_LEN'
     RSTRING_EMBED_LEN(str) : \
     ^~~~~~~~~~~~~~~~~~~~~~
/Users/lukasz/.rvm/rubies/ruby-2.6.5/include/ruby-2.6.0/ruby/ruby.h:996:6: note: expanded from macro 'RSTRING_EMBED_LEN'
     (long)((RBASIC(str)->flags >> RSTRING_EMBED_LEN_SHIFT) & \
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cbson.c:118:57: warning: implicit conversion loses integer precision: 'long' to 'int' [-Wshorten-64-to-32]
    result_t status = check_string(RSTRING_PTR(string), RSTRING_LEN(string),
                      ~~~~~~~~~~~~                      ^~~~~~~~~~~~~~~~~~~
/Users/lukasz/.rvm/rubies/ruby-2.6.5/include/ruby-2.6.0/ruby/ruby.h:1001:28: note: expanded from macro 'RSTRING_LEN'
     RSTRING(str)->as.heap.len)
     ~~~~~~~~~~~~~~~~~~~~~~^~~
cbson.c:128:45: warning: implicit conversion loses integer precision: 'long' to 'int' [-Wshorten-64-to-32]
    SAFE_WRITE(buffer, RSTRING_PTR(string), RSTRING_LEN(string));
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
/Users/lukasz/.rvm/rubies/ruby-2.6.5/include/ruby-2.6.0/ruby/ruby.h:1000:6: note: expanded from macro 'RSTRING_LEN'
     RSTRING_EMBED_LEN(str) : \
     ^
/Users/lukasz/.rvm/rubies/ruby-2.6.5/include/ruby-2.6.0/ruby/ruby.h:996:6: note: expanded from macro 'RSTRING_EMBED_LEN'
     (long)((RBASIC(str)->flags >> RSTRING_EMBED_LEN_SHIFT) & \
     ^
cbson.c:68:46: note: expanded from macro 'SAFE_WRITE'
    if (bson_buffer_write((buffer), (data), (size)) != 0)                    \
        ~~~~~~~~~~~~~~~~~                    ^~~~
cbson.c:128:45: warning: implicit conversion loses integer precision: 'long' to 'int' [-Wshorten-64-to-32]
    SAFE_WRITE(buffer, RSTRING_PTR(string), RSTRING_LEN(string));
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
/Users/lukasz/.rvm/rubies/ruby-2.6.5/include/ruby-2.6.0/ruby/ruby.h:1001:28: note: expanded from macro 'RSTRING_LEN'
     RSTRING(str)->as.heap.len)
                           ^
cbson.c:68:46: note: expanded from macro 'SAFE_WRITE'
    if (bson_buffer_write((buffer), (data), (size)) != 0)                    \
        ~~~~~~~~~~~~~~~~~                    ^~~~
cbson.c:303:20: warning: unused variable 'values' [-Wunused-variable]
            VALUE* values;
                   ^
cbson.c:602:18: error: implicit declaration of function 'bson_buffer_get_max_size' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
    if (length > bson_buffer_get_max_size(buffer)) {
                 ^
cbson.c:602:18: note: did you mean 'bson_buffer_set_max_size'?
./bson_buffer.h:34:6: note: 'bson_buffer_set_max_size' declared here
void bson_buffer_set_max_size(bson_buffer_t buffer, int max_size);
     ^
6 warnings and 1 error generated.
make: *** [cbson.o] Error 1

make failed, exit code 2

Gem files will remain installed in /Users/lukasz/.rvm/gems/ruby-2.6.5/gems/bson_ext-1.5.1 for inspection.
Results logged to /Users/lukasz/.rvm/gems/ruby-2.6.5/extensions/x86_64-darwin-19/2.6.0/bson_ext-1.5.1/gem_make.out

An error occurred while installing bson_ext (1.5.1), and Bundler cannot continue.
Make sure that `gem install bson_ext -v '1.5.1' --source 'https://rubygems.org/'` succeeds before bundling.

In Gemfile:
  bson_ext

任何人都知道我还能尝试什么? 另外我可以说bson_ext与其他版本(如1.9.1)已成功安装.但是在这个项目中我必须使用1.5.1.

Anyone has idea what can I try else? In addition I can say that bson_ext with other version like 1.9.1 are installing successfully. But in this project I have to use 1.5.1.

推荐答案

我发现了一个更好的解决方案,当您安装gem时,请将其添加到最后

I found a better solution, when you install the gem add this at the end

-- --with-cflags="-Wno-error=implicit-function-declaration"

这篇关于bson_ext gem安装在macOS上失败的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆