BuringStraw

BuringStraw

解决rust编译目标为musl时openssl报错

为了节省容器启动时间,准备把 rust 写的 api 编译好后扔进 docker 里,于是编译到 target
然后 openssl 炸了,不认 libssl-dev 了,查了下要重新编译。。。
但是,我们发现了一个神奇的 docker 镜象https://github.com/emk/rust-musl-builder,它已经配好了 openssl 的 musl 环境
于是只要这样:

alias rust-musl-builder='docker run --rm -it -v "$(pwd)":/home/rust/src ekidd/rust-musl-builder'
rust-musl-builder cargo build --release

就可以了

(不过好像也可以把 openssl 换成 rustls 来解决)

不过,rustls 现在与大多数 Rust 生态系统良好兼容,包括 reqwest、tokio、tokio-postgres、sqlx 等。唯一一个仍然需要 libpq 和 OpenSSL 的主要项目是 Diesel。如果你不需要 diesel 或 libpq:

查看是否可以不使用 OpenSSL,通常通过在 Cargo.toml 中使用特性请求你的依赖项使用 rustls。
如果你不需要 OpenSSL,尝试使用 cross build --target=x86_64-unknown-linux-musl --release 为 libmusl 交叉编译你的二进制文件。这支持更多的平台,且麻烦更少!

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。