M1 Mac执行bundle install遇x86_64架构符号未找到错误
M1 Mac下bundle install安装mysql2 0.5.3架构不匹配问题的解决方法
核心问题原因
M1 Mac为arm64架构,若brew、Ruby、MySQL等依赖混合了x86_64和arm64版本,就会出现编译时架构不匹配的报错。
解决步骤
1. 统一依赖架构为arm64
- 卸载现有MySQL:
brew uninstall mysql - 打开原生arm64终端(访达中找到终端,右键「显示简介」,取消勾选「使用Rosetta打开」),重新安装arm64版本的MySQL和OpenSSL:
brew install mysql openssl
2. 确认Ruby版本为arm64架构
- 检查当前Ruby架构:
输出需包含ruby -varm64-darwin,若显示x86_64-darwin,需重新安装对应Ruby版本:# 卸载旧的x86架构Ruby版本 rbenv uninstall <你的Ruby版本号> # 重新安装arm64架构的Ruby rbenv install <你的Ruby版本号> # 设置本地项目使用该版本 rbenv local <你的Ruby版本号>
3. 为bundle配置mysql2编译参数
- 执行以下命令,将编译参数写入bundle配置(适配arm64的brew路径
/opt/homebrew):bundle config build.mysql2 --with-ldflags=-L/opt/homebrew/opt/openssl/lib --with-cppflags=-I/opt/homebrew/opt/openssl/include --with-mysql-dir=/opt/homebrew/opt/mysql
4. 清理残留并重新安装
- 卸载旧的mysql2 gem:
gem uninstall mysql2 -v '0.5.3' - 清理bundle缓存:
bundle clean --force - 重新执行安装:
bundle install
补充说明
若之前使用过Rosetta下的x86版本brew,需彻底切换到arm64版本(路径为/opt/homebrew),避免依赖混合导致的架构冲突。
内容的提问来源于stack exchange,提问作者Tarta
相关产品推荐
相关产品推荐

