RedHat 6中Rust 1.59搭配reqwest(rustls-tls)构建失败的解决咨询
RedHat 6下Rust 1.59使用rustls-tls版reqwest的解决方法
问题根源
ring v0.16.20的构建脚本无法适配RedHat 6的glibc 2.15及老版本gcc环境,导致编译失败。
方案1:锁定ring兼容版本
在Cargo.toml中强制指定ring为0.16.19版本(该版本对老系统兼容性更好):
[package] name = "your_package_name" version = "0.1.0" edition = "2021" [dependencies] reqwest = { version = "0.10", default-features = false, features = ["blocking", "json", "rustls-tls"] } ring = "0.16.19"
方案2:指定编译参数适配老环境
- 确保已安装基础编译工具:
yum install gcc gcc-c++ make
- 临时设置环境变量后执行编译:
CC=gcc CFLAGS="-std=c99 -O2" cargo check
或者将配置写入~/.cargo/config,永久生效:
[build] env = { CC = "gcc", CFLAGS = "-std=c99 -O2" } rustflags = ["-C", "link-arg=-lrt"]
方案3:使用musl静态编译(规避系统glibc依赖)
- 添加musl目标:
rustup target add x86_64-unknown-linux-musl
- 修改
Cargo.toml的reqwest特性:
reqwest = { version = "0.10", default-features = false, features = ["blocking", "json", "rustls-tls", "musl"] }
- 指定musl目标编译:
cargo check --target x86_64-unknown-linux-musl
内容的提问来源于stack exchange,提问作者reddream
相关产品推荐
相关产品推荐

