无法在Ruby 3.0.2上安装rmagick



我正在尝试将Ruby版本从2.7.4更新到3.0.2。如果我在我的机器上本地执行bundle,我得到这个错误:

rmimage.c:12960:1: error: implicit declaration of function 'C__Bool_to_R__Bool' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
DEF_ATTR_ACCESSOR(Image, start_loop, bool)
^
./rmagick.h:460:5: note: expanded from macro 'DEF_ATTR_ACCESSOR'
DEF_ATTR_READER(class, attr, type)
^
./rmagick.h:417:16: note: expanded from macro 'DEF_ATTR_READER'
return C_##type##_to_R_##type(ptr->attr);
^

如果使用Docker,我设法使用ruby:3.0.2-alpine3.12构建映像,但是如果我试图将项目加载到容器内,我会得到这个错误:

LoadError:
Error relocating /app/vendor/bundle/ruby/3.0.0/gems/rmagick-3.2.0/lib/RMagick2.so: R__Bool_to_C__Bool: symbol not found - /app/vendor/bundle/ruby/3.0.0/gems/rmagick-3.2.0/lib/RMagick2.so

我不知道有什么问题和如何进行,所以感谢任何帮助!

如果你使用rmagick <3、macOS和Homebrew,尝试使用以下命令:

CFLAGS=‘-Wno-implicit-function-declaration’ gem i rmagick -v 2.16.0 -- --with-opt-dir=$(brew --prefix imagemagick@6)

最新版本的rmagick解决了这个问题。我建议更新rmagick和ruby版本。

最新更新