macOS M1下执行bundle install时llhttp-ffi gem构建原生扩展失败怎么办
根本原因
本地已安装的ffi gem是x86_64架构的二进制版本,和M1芯片的arm64架构不兼容,导致编译llhttp-ffi依赖ffi组件时加载失败。
解决步骤
- 先卸载当前所有版本的ffi:
gem uninstall ffi -a
如果提示存在其他gem依赖ffi,确认卸载所有版本即可。
- 编译适配arm64架构的ffi原生扩展并安装:
arch -arm64 gem install ffi -- --enable-libffi-alloc
- 单独安装对应版本的llhttp-ffi:
gem install llhttp-ffi -v '0.4.0'
- 回到项目目录重新执行依赖安装:
bundle install
注:如果执行过程中仍提示架构错误,先确认当前终端没有开启Rosetta兼容模式,右键终端→显示简介,取消「使用Rosetta打开」的勾选,重启终端后重试即可。如果同步出现sqlite3的安装报错,用同样的逻辑卸载现有sqlite3后,用
arch -arm64 gem install sqlite3重新安装即可。
内容的提问来源于stack exchange,提问作者tienyulin
相关产品推荐
相关产品推荐

