首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安装bcrypt-ruby gem时未能生成gem本机扩展。

安装bcrypt-ruby gem时未能生成gem本机扩展。
EN

Stack Overflow用户
提问于 2021-08-24 13:27:49
回答 1查看 571关注 0票数 2

当运行:gem install bcrypt-ruby -v '3.0.1'时,我得到以下错误:

代码语言:javascript
复制
Building native extensions. This could take a while...
ERROR:  Error installing bcrypt-ruby:
    ERROR: Failed to build gem native extension.

    current directory: /U/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/bcrypt-ruby-3.0.1/ext/mri
/U/.rbenv/versions/2.7.2/bin/ruby -I /U/.rbenv/versions/2.7.2/lib/ruby/2.7.0 -r ./siteconf20210824-80693-sdyma7.rb extconf.rb
creating Makefile

current directory: /U/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/bcrypt-ruby-3.0.1/ext/mri
make "DESTDIR=" clean

current directory: /U/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/bcrypt-ruby-3.0.1/ext/mri
make "DESTDIR="
compiling bcrypt_ext.c
bcrypt_ext.c:27:19: error: implicit declaration of function 'ruby_bcrypt' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
    return (VALUE)ruby_bcrypt(args->output, args->key, args->salt);
                  ^
bcrypt_ext.c:27:19: note: did you mean 'ruby_script'?
/U/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:2747:6: note: 'ruby_script' declared here
void ruby_script(const char* name);
     ^
bcrypt_ext.c:42:25: warning: implicit conversion loses integer precision: 'long' to 'int' [-Wshorten-64-to-32]
            NIL_P(input) ? 0 : RSTRING_LEN(input));
                               ^~~~~~~~~~~~~~~~~~
/U/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:1007:6: note: expanded from macro 'RSTRING_LEN'
     RSTRING_EMBED_LEN(str) : \
     ^~~~~~~~~~~~~~~~~~~~~~
/U/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:1003:6: note: expanded from macro 'RSTRING_EMBED_LEN'
     (long)((RBASIC(str)->flags >> RSTRING_EMBED_LEN_SHIFT) & \
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
bcrypt_ext.c:42:25: warning: implicit conversion loses integer precision: 'long' to 'int' [-Wshorten-64-to-32]
            NIL_P(input) ? 0 : RSTRING_LEN(input));
                               ^~~~~~~~~~~~~~~~~~
/U/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:1008:28: note: expanded from macro 'RSTRING_LEN'
     RSTRING(str)->as.heap.len)
     ~~~~~~~~~~~~~~~~~~~~~~^~~
2 warnings and 1 error generated.
make: *** [bcrypt_ext.o] Error 1

make failed, exit code 2

我的Ruby版本是2.7.2。有什么好办法让它安装吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-25 19:17:53

我在安装时必须添加一个标志:

代码语言:javascript
复制
gem install bcrypt-ruby -v '3.0.1' -- --with-cflags=-Wno-implicit-function-declaration

它成功地用Ruby 2.7.2安装了gem

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68908496

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档