ARM-64架构MacOS下Ruby 3.1.1编译构建失败求助
解决ARM64 macOS编译Ruby 3.1.1的架构不兼容问题
问题核心
你的报错本质是两个关键问题:
- Ruby 3.1.1仅兼容OpenSSL 1.1.x版本,而当前brew默认安装的是OpenSSL 3.x,导致代码编译时出现
struct X509_crl_st定义缺失的错误; - 你配置的libffi路径指向了x86_64架构的
/usr/local目录(Rosetta 2下的brew路径),而ARM64 macOS的原生brew路径是/opt/homebrew,导致链接时出现架构不匹配的警告。
解决步骤
1. 清理x86架构依赖并安装ARM版兼容组件
先卸载x86版本的libffi和OpenSSL,再用ARM原生brew安装Ruby 3.1.1需要的适配版本:
# 通过Rosetta卸载x86架构的依赖 arch -x86_64 brew uninstall --force libffi openssl # 安装ARM版的OpenSSL 1.1和libffi(原生ARM brew) brew install openssl@1.1 libffi
2. 修正环境变量配置
打开~/.zshrc,替换原有相关配置为以下内容(指向ARM原生brew的依赖路径):
export PATH="/opt/homebrew/opt/openssl@1.1/bin:$PATH" export LDFLAGS="-L/opt/homebrew/opt/libffi/lib -L/opt/homebrew/opt/openssl@1.1/lib" export CPPFLAGS="-I/opt/homebrew/opt/libffi/include -I/opt/homebrew/opt/openssl@1.1/include" export PKG_CONFIG_PATH="/opt/homebrew/opt/libffi/lib/pkgconfig:/opt/homebrew/opt/openssl@1.1/lib/pkgconfig"
执行命令使配置生效:
source ~/.zshrc
3. 重新编译安装Ruby 3.1.1
根据你使用的版本管理工具选择对应命令:
- 使用rbenv:
RUBY_CONFIGURE_OPTS="--with-openssl-dir=$(brew --prefix openssl@1.1)" rbenv install 3.1.1
- 使用rvm:
rvm reinstall 3.1.1 --with-openssl-dir=$(brew --prefix openssl@1.1)
4. 验证安装结果
安装完成后,执行以下命令确认Ruby版本和架构适配:
ruby -v # 预期输出:ruby 3.1.1p18 (2022-02-18 revision 53f5fc4236) [arm64-darwin2x.x]
内容的提问来源于stack exchange,提问作者karmic_mishap
相关产品推荐
相关产品推荐

