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

M1芯片MacOS Monterey下Ruby3.0.2安装sqlite3 gem报错如何解决

问题原因

该报错是Ruby 3.0.2在Apple Silicon架构下的头文件宏定义特性与旧版本sqlite3 gem(1.4.2)的编译规则不兼容导致:Ruby 3.0+引入了__declspec相关的属性宏,而sqlite3 1.4.2的默认编译参数没有开启对应编译器特性,同时M1芯片Mac默认的Homebrew sqlite3路径不在gem的默认搜索路径中,双重原因触发编译失败。Ruby 2.7.4版本没有相关宏定义,所以可以正常安装。

修复步骤

前置准备

先通过Homebrew安装原生arm64架构的sqlite3依赖:

brew install sqlite3

方案1:安装兼容Ruby 3 + M1的新版本sqlite3 gem(推荐)

sqlite3 1.5.0及以上版本已经适配了Apple Silicon和Ruby 3.0+,直接指定编译参数安装即可:

gem install sqlite3 -- --with-sqlite3-dir=$(brew --prefix sqlite3)

如果需要指定版本,可执行:

gem install sqlite3 -v '1.5.3' -- --with-sqlite3-dir=$(brew --prefix sqlite3)

方案2:强制兼容安装sqlite3 1.4.2版本

如果业务需要必须使用1.4.2版本,额外添加编译器参数开启__declspec特性支持即可:

gem install sqlite3 -v '1.4.2' -- --with-cflags="-fdeclspec" --with-sqlite3-dir=$(brew --prefix sqlite3)

Bundler项目全局配置

如果是使用Bundler管理依赖的项目,可执行以下命令配置全局编译参数,后续执行bundle install时自动生效:

bundle config set build.sqlite3 --with-sqlite3-dir=$(brew --prefix sqlite3) --with-cflags="-fdeclspec"
验证

安装完成后执行以下命令验证安装成功:

ruby -r sqlite3 -e "puts SQLite3::VERSION"

正常输出版本号即表示安装成功。

内容的提问来源于stack exchange,提问作者Brian Morearty

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 19:24:07