You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mac Sonoma(M3 Max)下Rails项目bundle install时sqlite3编译报错

解决sqlite3 1.4.2在M3 Max Sonoma上的编译错误

问题场景

在搭载M3 Max芯片的macOS 14 Sonoma设备上,使用Ruby 2.7.8 + Rails 5.2执行bundle install时,sqlite3 1.4.2版本出现原生扩展编译错误,报错涉及-Wno-error=incompatible-function-pointer-types和-Wno-error=int-conversion类型不兼容问题,此前在macOS 11 Big Sur上可正常完成安装。已尝试修改.bundle/config添加编译参数、单独安装sqlite3和nio4r gem,但问题仍未解决。

当前环境配置:

  • Ruby版本:ruby 2.7.8p225 (2023-03-30 revision 1f4d455848) [arm64-darwin23]
  • Rails版本:~>5.2
  • 设备:MacBook M3 Max,macOS Sonoma 14.4

解决方案

方案1:通过环境变量传递编译参数

直接在执行命令前设置环境变量,确保编译参数正确传递给sqlite3 gem的编译过程:

  1. 先单独安装指定版本的sqlite3:
ARCHFLAGS="-arch arm64" gem install sqlite3 -v 1.4.2 -- --with-cflags="-Wno-error=incompatible-function-pointer-types -Wno-error=int-conversion"
  1. 再执行bundle install:
bundle install

如果单独安装后bundle仍报错,可直接在bundle命令前附加环境变量:

ARCHFLAGS="-arch arm64" CFLAGS="-Wno-error=incompatible-function-pointer-types -Wno-error=int-conversion" bundle install

方案2:升级sqlite3 gem版本

sqlite3 1.4.2版本对arm64架构的新编译器兼容性不足,升级到修复过相关问题的版本(如1.4.4及以上):

  1. 修改Gemfile中的sqlite3版本声明:
gem 'sqlite3', '~> 1.4.4'
  1. 执行更新命令:
bundle update sqlite3

方案3:指定brew安装的sqlite3路径(若已通过brew安装)

如果使用Homebrew安装了sqlite3,可指定其路径让gem编译时调用:

gem install sqlite3 -v 1.4.2 -- --with-sqlite3-dir=$(brew --prefix sqlite3) --with-cflags="-Wno-error=incompatible-function-pointer-types -Wno-error=int-conversion"

完成后再执行bundle install

内容的提问来源于stack exchange,提问作者Victor Cordeiro Costa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 08:42:46