M1 Mac(ARM64架构)构建SQLite.Interop.dll及System.Data.SQLite遇阻求助
ARM64架构macOS(M1/M2)下构建System.Data.SQLite完整指引
前置环境准备
- 安装Xcode Command Line Tools:
xcode-select --install - 安装ARM64版本的.NET SDK(推荐.NET 6/7 LTS版本),执行以下命令确认架构适配:
确保输出中dotnet --infoRID包含osx-arm64,且架构显示为arm64。 - 验证ARM64编译器:
输出需包含gcc --versionaarch64-apple-darwin字样,确认是适配M系列芯片的编译器。
编译SQLite.Interop.dll
- 解压下载的
sqlite-netFx-source-1.0.115.5.zip,进入解压后的根目录:cd sqlite-netFx-source-1.0.115.5 - 进入SQLite.Interop源码目录,运行编译脚本(用bash执行避免zsh兼容性问题):
cd SQLite.Interop/src bash compile-interop-assembly-release.sh - 编译完成后,
SQLite.Interop.dll会生成在../../bin/Release/netstandard2.0/osx-arm64/目录下,可通过脚本输出确认具体路径。
构建System.Data.SQLite.dll
- 返回源码根目录:
cd ../.. - 执行dotnet build时指定具体项目文件,避免多项目冲突报错:
dotnet build System.Data.SQLite/System.Data.SQLite.csproj -c Release -r osx-arm64 - 构建成功后,
System.Data.SQLite.dll会输出到bin/Release/netstandard2.0/目录,对应的SQLite.Interop.dll会自动复制到该目录的runtimes/osx-arm64/native/子路径下。
常见错误修复
- "Specify which project or solution file to use...":根目录存在多个项目文件,必须明确指定
System.Data.SQLite.csproj作为编译目标,不能直接运行dotnet build。 - "Root element is missing":大概率是源码包解压不完整或损坏,重新下载并解压;同时检查磁盘权限,确保解压目录可读写。
- Interop脚本编译失败:确认Xcode Command Line Tools已正确安装,若仍有依赖缺失,执行
brew install sqlite3补充系统级依赖。
内容的提问来源于stack exchange,提问作者Prashant Shukla
相关产品推荐
相关产品推荐

