M2 Mac升级Rails5至6后执行命令报错dyld[...]: missing symbol called
解决M2芯片Mac上Rails 6升级后
dyld[...]: missing symbol called错误 核心原因
M2芯片为arm64架构,mysql2 gem编译时的架构不匹配、webpacker依赖的Node架构冲突,导致出现缺失符号的动态链接错误。
解决方案步骤
1. 重新编译arm64版本的mysql2 gem
- 先卸载所有已安装的mysql2版本:
gem uninstall mysql2 -a - 若你通过brew安装MySQL,用以下命令指定arm64架构重新安装对应版本的mysql2:
gem install mysql2 -v '0.5.5' \ -- --with-mysql-config=$(brew --prefix mysql)/bin/mysql_config \ --with-cflags="-arch arm64" \ --with-ldflags="-arch arm64" - 若MySQL不是brew安装,替换
$(brew --prefix mysql)为你的MySQL实际安装路径即可。
2. 确保Node为arm64版本并修复webpacker依赖
- 卸载x64版本的Node,从Node.js官网下载arm64架构的安装包安装,或用nvm安装适配版本:
nvm uninstall <你的x64版本号> nvm install --lts --arch arm64 - 进入项目目录,清理并重新安装前端依赖:
rm -rf node_modules yarn.lock yarn install rails webpacker:install
3. 验证终端与Ruby的架构一致性
- 确保终端未使用Rosetta转译:右键终端应用→显示简介,取消勾选「使用Rosetta打开」
- 若之前的Ruby是通过Rosetta编译的,重新编译arm64版本的Ruby:
rbenv uninstall 3.1.2 CC="clang -arch arm64" rbenv install 3.1.2
验证操作
执行以下命令创建新的MySQL项目并测试:
rails new test_mysql -d mysql cd test_mysql rails s
内容的提问来源于stack exchange,提问作者GTO
相关产品推荐
相关产品推荐

