Mac ARM64环境下Rust+Diesel编译报错:找不到ssl库求助
解决Mac ARM64下Rust Diesel编译
ld: library 'ssl' not found错误 问题根源
Mac ARM64架构下,Homebrew安装的OpenSSL默认不在系统链接器的搜索路径里,而Diesel依赖的MySQL客户端库需要调用OpenSSL,导致编译时找不到ssl库。
解决方法
1. 定位OpenSSL安装路径
执行命令获取openssl@3的具体位置:
brew --prefix openssl@3
ARM64架构的Homebrew默认输出为/opt/homebrew/opt/openssl@3,记好这个路径。
2. 临时配置环境变量(单次生效)
在当前终端运行以下命令,让cargo编译时能找到OpenSSL:
export OPENSSL_DIR=$(brew --prefix openssl@3) export LDFLAGS="-L$(brew --prefix openssl@3)/lib" export CPPFLAGS="-I$(brew --prefix openssl@3)/include"
之后执行cargo run即可尝试重新编译。
3. 永久配置环境变量(长期生效)
如果临时配置有效,把变量写入shell配置文件,避免每次手动输入:
- 使用zsh的话,编辑
~/.zshrc:
echo 'export OPENSSL_DIR=$(brew --prefix openssl@3)' >> ~/.zshrc echo 'export LDFLAGS="-L$(brew --prefix openssl@3)/lib"' >> ~/.zshrc echo 'export CPPFLAGS="-I$(brew --prefix openssl@3)/include"' >> ~/.zshrc
执行source ~/.zshrc让配置立即生效。
- 使用bash的话,编辑
~/.bash_profile或~/.bashrc,步骤同上。
4. 检查Diesel依赖配置
确认Cargo.toml中diesel的特性配置正确,示例如下:
diesel = { version = "2.1", features = ["mysql", "chrono"] }
若遗漏相关特性可能引发连锁问题,但核心仍为OpenSSL路径问题。
5. 清理缓存重新构建
若以上步骤无效,清理cargo缓存后重新构建:
cargo clean cargo run
额外提示
- 不要执行
brew install ssl,Homebrew中不存在名为ssl的包,正确包名为openssl或openssl@3。 - Mac ARM64的Homebrew默认安装路径为
/opt/homebrew,与Intel架构的/usr/local不同,这是常见踩坑点。
内容的提问来源于stack exchange,提问作者iubns
相关产品推荐
相关产品推荐

