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:

请尝试通过在 Cargo.toml 中使用功能要求您的依赖项改用 rustls 来替换 OpenSSL。
如果您不需要 OpenSSL,请尝试 cross build --target=x86_64-unknown-linux-musl --release 来交叉编译您的二进制文件以供 libmusl 使用。这支持更多平台,更少麻烦!

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