MacBook Pro(16英寸,2019款)macOS Big Sur 11.2.3环境下Ruby 2.1.2安装失败求助
解决 macOS Big Sur 安装 Ruby 2.1.x/2.2.x 的 OpenSSL 扩展编译失败问题
我之前在 Big Sur 上装老版本 Ruby 也碰到过一模一样的问题,核心原因是这些 Ruby 版本发布时还没适配 Big Sur 的 Clang 编译器和新的 OpenSSL 1.1+ API。你试过的单独设置 --with-openssl-dir 或者 CFLAGS 不够,得把几个关键参数结合起来用,具体步骤如下:
步骤1:确保安装了 OpenSSL 1.0
首先确认你已经通过 Homebrew 装了 openssl@1.0,如果没装的话先执行:
brew install openssl@1.0
步骤2:组合环境变量执行安装
把 OpenSSL 路径、编译警告忽略参数一起设置,一次性运行安装命令:
RUBY_CONFIGURE_OPTS="--with-openssl-dir=$(brew --prefix openssl@1.0)" \ CFLAGS="-Wno-error=implicit-function-declaration -Wno-error=incompatible-function-pointer-types" \ rbenv install 2.1.2
为什么要加这些参数?
--with-openssl-dir:指定用老版本的 OpenSSL 1.0,因为 Ruby 2.1.x/2.2.x 不支持 OpenSSL 1.1+ 的新 API-Wno-error=implicit-function-declaration:你之前试过这个,用来关闭 Clang 把隐式函数声明当成错误的检查-Wno-error=incompatible-function-pointer-types:Big Sur 的 Clang 会把函数指针类型不兼容当成错误,老 Ruby 代码里存在这类问题,必须忽略才能完成编译
如果还是失败?
如果上面的方法不行,可以尝试安装更旧版本的 Xcode 命令行工具(比如 Xcode 12.4),因为新版本的工具链对老代码的兼容性更差。不过这个操作相对麻烦,先优先试上面的组合参数方法。
内容的提问来源于stack exchange,提问作者sgk
相关产品推荐
相关产品推荐

