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:

查看是否可以切換 away from OpenSSL,通常通過在 Cargo.toml 中使用功能請求你的依賴項使用 rustls 代替。
如果你不需要 OpenSSL,嘗試 cross build --target=x86_64-unknown-linux-musl --release 來為 libmusl 交叉編譯你的二進制文件。這支持更多平台,麻煩更少!

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。