MacOS M1芯片安装Ruby gem ffi 1.8.1后架构不兼容问题求助
解决MacOS M1芯片上Rails依赖ffi 1.8.1的架构不兼容问题
问题原因
你安装的ffi 1.8.1是x86_64架构,但当前运行的Ruby环境为arm64架构,动态库加载时出现架构不匹配,导致启动失败。
解决方案
方案1:切换到x86_64架构环境运行应用
- 卸载已安装的x86_64版本ffi:
gem uninstall ffi -v 1.8.1 - 用Rosetta 2启动终端:右键终端应用→「获取信息」→勾选「使用Rosetta打开」
- 在该终端内重新安装依赖:
# 如果使用bundler bundle install # 或直接安装ffi gem install ffi -v 1.8.1 --with flags="-Wno-error=implicit-function-declaration" - 在该终端内启动Rails:
rails s
方案2:编译arm64版本的ffi 1.8.1
- 卸载现有ffi:
gem uninstall ffi -v 1.8.1 - 设置环境变量指定arm64架构及编译参数:
export ARCHFLAGS="-arch arm64" export INSTALL_FLAGS="--with flags=\"-Wno-error=implicit-function-declaration\"" - 安装arm64版本的ffi:
gem install ffi -v 1.8.1 $INSTALL_FLAGS - 正常启动Rails:
rails s
额外检查
可以通过以下命令确认当前Ruby的架构:
ruby -e 'puts RUBY_PLATFORM'
- 若输出包含
arm64,则Ruby为arm64架构,优先使用方案2 - 若输出包含
x86_64,则Ruby为x86_64架构,优先使用方案1
内容的提问来源于stack exchange,提问作者peterparker
相关产品推荐
相关产品推荐

