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

Mac M1 Air运行gem报Bad CPU type in executable错误如何解决

报错根本原因

该报错是M系列(arm64架构)Mac上典型的二进制架构不匹配问题:

  • 报错信息arch: posix_spawnp: gem: Bad CPU type in executable的直接触发逻辑是:当前执行的gem可执行文件的编译架构,和你指定/当前终端运行的CPU架构不匹配,系统无法加载运行。
  • 之前执行sudo arch -x86_64 gem install ffi无效的原因:M1芯片上默认通过Homebrew安装的Ruby是arm64原生编译版本,对应的gem二进制也是arm64架构,强行指定用x86_64模式运行arm64架构的二进制,必然触发CPU类型不匹配错误。
  • 执行brew uninstall --ignore-dependencies ruby后问题解决的逻辑:卸载Homebrew安装的独立Ruby后,系统会优先调用MacOS自带的/usr/bin/gem,这个官方自带的二进制是通用胖二进制,同时兼容arm64和x86_64架构,不存在架构匹配问题,所以操作恢复正常。
标准修复方案

根据自身使用场景选对应方案即可:

  • 无特殊Ruby版本需求,优先使用系统自带Ruby
    • 先执行which gem确认当前gem来源,如果输出路径为/opt/homebrew/opt/ruby/bin/gem这类Homebrew安装路径,直接执行brew uninstall --ignore-dependencies ruby移除Homebrew版Ruby即可
    • 重启终端后再次执行which gem,确认输出为/usr/bin/gem即修复完成
    • 后续安装gem包时建议追加--user-install参数,将包装到当前用户目录避免权限问题,不要随意用sudo调用系统gem。
  • 需要保留Homebrew安装的Ruby版本
    • 取消终端的Rosetta转译设置:访达中找到终端应用,右键选「显示简介」,取消勾选「使用Rosetta打开」
    • 重启终端后执行hash -r清除shell缓存,直接正常调用gem命令即可,不要额外加arch -x86_64前缀。
  • 明确需要使用x86_64架构Ruby的场景
    • 右键终端勾选「使用Rosetta打开」,重启终端后安装x86架构版本的Homebrew
    • 通过x86版Homebrew执行brew install ruby,安装完成后这版Ruby对应的gem就是x86_64架构,此时再用arch -x86_64前缀调用才会正常,不要和arm64版Homebrew安装的Ruby混用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 00:42:22