从Intel更换为M2芯片后,执行Rails命令出现dyld缺失符号报错
解决M2芯片迁移后Rails命令报错的方案
核心原因
Time Machine迁移的Ruby及Rails相关gems是基于Intel架构编译的,与M2的arm64架构不兼容,导致动态链接时出现符号缺失错误。
解决步骤
1. 重新编译适配arm64的Ruby版本
通过rbenv重新安装当前使用的Ruby版本,生成适配M2架构的二进制文件:
# 替换为你实际使用的Ruby版本,比如3.2.2 rbenv uninstall 3.2.2 rbenv install 3.2.2 rbenv global 3.2.2 rbenv rehash
2. 重置项目依赖gems
进入项目目录,清理旧的架构不兼容gems,重新安装适配版本:
rm Gemfile.lock rm -rf vendor/bundle bundle install
3. 验证修复效果
执行以下命令确认Rails功能恢复:
rails --version rails db:create
额外排查点
- 确认终端架构:执行
arch命令,输出应为arm64,若为i386需关闭终端的Rosetta选项(右键终端-显示简介-取消勾选"使用Rosetta打开")。 - 补全Xcode组件:执行
xcode-select --install更新命令行工具,再运行sudo xcodebuild -license accept完成协议配置。
内容的提问来源于stack exchange,提问作者HeppokoNeet
相关产品推荐
相关产品推荐

