M1 Mac已安装sqlite3但gem install sqlite3报错找不到库如何解决?
根因分析
- 参数使用错误:
--with-sqlite3-dir需要传入sqlite的安装根目录,你传入的是sqlite3可执行文件的完整路径,导致编译时无法找到对应的头文件和库文件。 - 架构不匹配:编译gem原生扩展时,gcc默认按x86_64架构生成代码,但你的Ruby和homebrew安装的sqlite都是arm64架构,链接时架构不匹配,导致找不到
sqlite3_libversion_number函数,抛出sqlite3缺失的错误。
解决步骤
步骤1:确认终端运行架构
右键终端应用,点击「显示简介」,确认「使用Rosetta打开」选项未被勾选。重启终端后执行arch命令,输出应为arm64。
步骤2:使用正确参数安装gem
传入正确的sqlite安装根目录执行安装:
gem install sqlite3 -- --with-sqlite3-dir=/opt/homebrew/opt/sqlite
步骤3:强制指定架构编译(可选)
如果仍报架构不匹配错误,执行以下命令强制指定arm64架构编译:
ARCHFLAGS="-arch arm64" gem install sqlite3 -- --with-sqlite3-dir=/opt/homebrew/opt/sqlite
步骤4:Bundler全局配置(适用于项目使用Bundler的场景)
执行以下命令配置bundler的sqlite3编译参数,后续执行bundle install时无需再手动指定参数:
bundle config build.sqlite3 --with-sqlite3-dir=/opt/homebrew/opt/sqlite
内容的提问来源于stack exchange,提问作者twk
相关产品推荐
相关产品推荐

