You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

M1 Mac运行gem报错:mach-o架构不兼容(x86_64/arm64e)

M1 Mac Ruby项目gem架构不兼容问题解决(strscan x86_64/arm64e冲突)

问题重现

执行gem命令时触发架构不兼容错误:

<internal:/Users/matti/.rvm/rubies/ruby-3.1.2/lib/ruby/3.1.0/rubygems/core_ext/kernel_require.rb>:85:in `require': dlopen(/Users/matti/.rvm/gems/ruby-3.1.2/gems/strscan-3.0.3/lib/strscan.bundle, 0x0009): tried: '/Users/matti/.rvm/gems/ruby-3.1.2/gems/strscan-3.0.3/lib/strscan.bundle' (mach-o file, but is an incompatible architecture (have (x86_64), need (arm64e))) - /Users/matti/.rvm/gems/ruby-3.1.2/gems/strscan-3.0.3/lib/strscan.bundle (LoadError)

当前Ruby版本为:

ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [arm64-darwin21]

已尝试gem uninstall、gem -arch -arm64e等操作,无效。

解决方案

1. 确认终端架构(关键前提)

确保使用原生ARM64终端,而非Rosetta模拟的x86终端:

  • 打开访达,找到「终端」应用,右键选择「显示简介」
  • 取消勾选「使用Rosetta打开」,重启终端
  • 执行arch命令验证,输出应为arm64

2. 强制重新编译arm64版本的strscan gem

# 彻底卸载所有版本的strscan
gem uninstall strscan --all
# 设置编译架构为arm64e
export ARCHFLAGS="-arch arm64e"
# 强制从源码编译安装,避免使用预编译的x86包
gem install strscan --platform=ruby

3. 极端情况:重新编译ARM64原生Ruby

如果上述步骤无效,说明当前Ruby版本可能存在编译残留,需彻底重装:

# 卸载现有Ruby版本
rvm uninstall 3.1.2
# 清理rvm缓存
rvm cleanup all
# 设置架构后从源码编译安装Ruby
export ARCHFLAGS="-arch arm64e" && rvm install 3.1.2 --disable-binary

验证

安装完成后,执行以下命令确认:

# 确认Ruby架构
ruby -v
# 确认strscan gem已安装且为arm64架构
gem list strscan
# 检查bundle文件架构
lipo -info /Users/matti/.rvm/gems/ruby-3.1.2/gems/strscan-*/lib/strscan.bundle

输出应显示arm64或arm64e架构。

内容的提问来源于stack exchange,提问作者Matti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 19:05:22