奇想齋

歸檔 鏈接

Go和Rust的靜態鏈接

2021-10-16

Go和Rust都有一個「賣點」,就是可以直接從一份代碼直接編譯出各個操作系統上的二進制。但是在Linux平臺上,編譯出的二進制還是依賴glibc,如果編譯機和部署機器上的glibc版本不同就可能無法運行,所以需要把glibc也靜態鏈接進來。

Go

go build -tags netgo -ldflags '-extldflags "-static"'

Rust

Rust的話在嘗試靜態鏈接glibc的時候碰到了一些奇怪的依賴問題,查了很久的stackoverflow也沒有解決,於是改成使用musl:

sudo pacman -S musl
rustup target add x86_64-unknown-linux-musl
cargo build --release --target x86_64-unknown-linux-musl

Powered by Pandoc ©️ 2017-2022 奈卜拉