Rust CLI工具在Linux 5.19内核机器Cargo构建失败求助
解决方案
核心原因
ERR_get_error_all 是OpenSSL 3.0及以上版本才引入的API,你当前安装的libssl-dev 1.1.1f并不包含这个函数。你的openssl-0.10.45 crate本应适配OpenSSL 1.1.1,但构建过程中错误地尝试绑定了OpenSSL 3.0的API,导致链接失败。
具体解决步骤
1. 强制指定OpenSSL版本特性
在Cargo.toml中给openssl依赖明确添加v110特性(对应OpenSSL 1.1.0+/1.1.1系列),确保绑定逻辑适配系统已安装的版本:
[dependencies] openssl = { version = "0.10.45", features = ["v110"] }
2. 清理构建缓存与依赖
清除旧的构建缓存和依赖锁文件,避免残留的错误配置干扰:
cargo clean rm -f Cargo.lock cargo build
3. 检查系统OpenSSL环境
确认系统中没有冲突的OpenSSL版本:
- 查看当前系统默认OpenSSL版本:
openssl version - 验证
pkg-config指向的库版本:
如果输出不是pkg-config --modversion openssl1.1.1f,调整PKG_CONFIG_PATH环境变量指向正确的库路径,例如:export PKG_CONFIG_PATH=/usr/lib/x86_64-linux-gnu/pkgconfig
4. 备选方案:改用纯Rust TLS库
如果上述方法仍无法解决,可以将依赖从openssl切换到rustls(纯Rust实现的TLS库,无需依赖系统OpenSSL),彻底规避版本兼容问题。例如替换相关依赖为:
[dependencies] rustls = "0.21" rustls-pemfile = "1.0"
内容的提问来源于stack exchange,提问作者xin yao
相关产品推荐
相关产品推荐

