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

Ruby Gems安装遇架构不兼容错误,寻求解决方法

问题描述

尝试通过Ruby Gems安装ocra时,收到如下提示:

gem install ocra
Ignoring strscan-3.0.4 because its extensions are not built. Try: gem pristine strscan --version 3.0.4

按照提示执行gem pristine strscan --version 3.0.4后,执行gem install rails安装rails时出现错误:

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

核心问题为架构不兼容:

(mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64e'))

运行arch命令返回结果为arm64,且执行任何gem命令都会触发相同错误。

解决方案
  • 彻底清理并重装适配架构的strscan gem
    先卸载不兼容版本,再强制编译适配arm64的扩展:

    gem uninstall strscan --version 3.0.4
    gem install strscan --version 3.0.4 -- --enable-shared
    
  • 重新编译rbenv管理的Ruby版本
    若当前Ruby版本是基于x86_64架构编译的,需重新编译适配arm64:

    # 卸载现有3.1.2版本
    rbenv uninstall 3.1.2
    # 设置编译参数,指定arm64架构及依赖路径
    export RUBY_CONFIGURE_OPTS="--enable-shared --with-openssl-dir=$(brew --prefix openssl)"
    export CC="clang"
    # 重新安装Ruby
    rbenv install 3.1.2
    # 切换全局版本并刷新环境
    rbenv global 3.1.2
    rbenv rehash
    
  • 检查终端运行模式
    若终端在Rosetta模式下运行,会导致编译出x86_64架构的gem:

    1. 访达中找到「终端」应用(/Applications/Utilities/终端.app)
    2. 右键选择「显示简介」,取消勾选「使用Rosetta打开」
    3. 重启终端后,确认arch命令返回arm64,再重新安装相关gem
  • 清理gem缓存残留
    若缓存中仍有旧架构的文件,清理后重装:

    gem cleanup strscan
    rm -rf ~/.gem/gems/strscan-3.0.4
    gem install strscan --version 3.0.4
    

内容的提问来源于stack exchange,提问作者Caecilius-rgb

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 12:31:01