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

Mac M1通过RVM安装ARM64 Ruby时遇dyld缺失符号问题

解决M1 Mac上ARM64架构Ruby启动Rails报错dyld[*****]: missing symbol called的方案
  • 彻底清理ARM64 Ruby环境残留

    1. 卸载当前RVM中的ARM64 Ruby版本:
      rvm uninstall 3.0.5
      
    2. 清理RVM编译缓存及冗余文件:
      rvm cleanup all
      
    3. 验证Homebrew依赖的架构一致性,以libffi为例:
      file $(brew --prefix libffi)/lib/libffi.dylib
      
      若输出不含arm64,则卸载重装ARM64版本:
      brew uninstall libffi && brew install libffi
      
      对libyaml执行同样的检查和重装操作。
  • 重新指定环境变量编译ARM64 Ruby

    1. 确认终端为原生ARM64模式(非Rosetta),执行arch命令验证输出为arm64。
    2. 设置编译环境变量,明确指向ARM64依赖路径:
      export PATH="/opt/homebrew/bin:$PATH"
      export LDFLAGS="-L/opt/homebrew/opt/libffi/lib -L/opt/homebrew/opt/libyaml/lib"
      export CPPFLAGS="-I/opt/homebrew/opt/libffi/include -I/opt/homebrew/opt/libyaml/include"
      export PKG_CONFIG_PATH="/opt/homebrew/opt/libffi/lib/pkgconfig:/opt/homebrew/opt/libyaml/lib/pkgconfig"
      
    3. 用RVM重新编译安装指定架构的Ruby:
      rvm install 3.0.5 --with-arch=arm64
      
  • 检查并修复Gem依赖的架构一致性

    1. 清理旧Gem缓存:
      bundle clean --force
      
    2. 重新执行bundle install。
    3. 检查关键原生扩展Gem的架构,以ffi为例:
      file $(bundle show ffi)/lib/ffi_c.bundle
      
      若输出不含arm64,则卸载并重新安装该Gem:
      bundle exec gem uninstall ffi && bundle install
      
      对nokogiri等其他原生扩展Gem执行同样检查。
  • 排查系统动态库冲突

    1. 用dyld_info查看Rails启动依赖的动态库:
      dyld_info -d $(which rails)
      
      检查输出中的依赖库是否存在x86_64架构的文件,若有则替换为ARM64版本。
    2. 确认当前Ruby环境为RVM管理的ARM64版本:
      which ruby
      
      确保路径指向~/.rvm/rubies/ruby-3.0.5/bin/ruby这类ARM64版本路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 16:47:34