添加aws-sdk-rust依赖失败,无法检测OpenSSL版本如何解决?
解决OpenSSL v0.9.24构建失败(无法检测版本)的问题
1. 检查系统OpenSSL版本兼容性
openssl v0.9.24属于较旧的依赖版本,可能和你当前系统安装的OpenSSL(1.1.x或3.x版本)不兼容。先确认系统的OpenSSL版本:
openssl version
如果版本不匹配,要么升级依赖版本,要么指定兼容的OpenSSL路径。
2. 强制更新openssl-sys依赖
在Cargo.toml中添加补丁声明,让aws-sdk-rust使用更新的openssl-sys版本(比如0.9.75+,该版本支持OpenSSL 1.1.1及以上):
[patch.crates-io] openssl-sys = { version = "0.9.75" }
执行cargo update更新依赖后,重新尝试构建。
3. 手动指定OpenSSL路径(适用于手动编译的情况)
如果你已经手动编译了OpenSSL,需要明确告知构建脚本其安装路径:
# 替换为你的OpenSSL实际安装目录 export OPENSSL_DIR=/usr/local/openssl export OPENSSL_LIB_DIR=/usr/local/openssl/lib export OPENSSL_INCLUDE_DIR=/usr/local/openssl/include cargo build
注意手动编译的OpenSSL版本必须与openssl-sys支持的版本匹配。
4. 改用rustls替代系统OpenSSL
aws-sdk-rust支持通过特性开关使用纯Rust实现的rustls,彻底规避系统OpenSSL的依赖问题。修改Cargo.toml中的相关依赖:
aws-config = { version = "0.51", default-features = false, features = ["rustls"] } aws-sdk-s3 = { version = "0.21", default-features = false, features = ["rustls"] } # 其他AWS SDK crate同理,关闭默认特性并启用rustls
修改后直接执行cargo build即可,无需依赖系统OpenSSL库。
5. 清理Cargo缓存后重试
缓存异常也可能导致构建失败,清理后重新构建:
cargo clean rm -rf ~/.cargo/registry/index cargo build
内容的提问来源于stack exchange,提问作者Simon Bergman
相关产品推荐
相关产品推荐

