macOS安装Ruby 2.4.10遇__rvm_make -j8错误求助
解决macOS下RVM安装Ruby 2.4.10时的
ffi_prep_closure编译错误 错误根源
报错核心是closure.c:263:14: error: call to undeclared function 'ffi_prep_closure',这是因为新版macOS的Clang编译器默认启用C99严格模式,不允许隐式函数声明,而Ruby 2.4.10的fiddle扩展(依赖libffi)未适配该规则。
解决方法
方法1:通过编译参数跳过警告
安装时添加环境变量,让编译器忽略隐式函数声明的错误:
CFLAGS="-Wno-error=implicit-function-declaration" rvm install ruby-2.4.10
方法2:指定兼容版本的libffi
如果方法1无效,手动安装Ruby 2.4.x兼容的libffi版本:
- 用Homebrew安装旧版libffi:
brew install libffi@3.3
- 配置环境变量后再安装Ruby:
export PKG_CONFIG_PATH="/usr/local/opt/libffi@3.3/lib/pkgconfig" CFLAGS="-Wno-error=implicit-function-declaration" rvm install ruby-2.4.10
方法3:降级Command Line Tools(极端情况)
如果你的macOS版本为Ventura/Sonoma等较新版本,新版Xcode Command Line Tools对老Ruby兼容性极差,可以降级到Xcode 12.x对应的Command Line Tools(需从Apple开发者官网下载),安装后再执行RVM安装命令。
注意事项
Ruby 2.4.x已处于终止维护状态,不再接收安全更新和bug修复,建议尽可能升级到受支持的Ruby版本(如2.7+或3.x分支),避免后续出现更多兼容性问题。
内容的提问来源于stack exchange,提问作者Shefalee Chaudhary
相关产品推荐
相关产品推荐

