home · archive · links · projects

靜態鏈接Go和Rust

Go和Rust有個很好用的特性:二進制部署。但是在Linux上,編譯出來的二進制文件還是依賴glibc。要是開發機和部署機上的glibc版本不一致就麻煩了。所以,如果要直接二進制部署,glibc也要靜態鏈接上。

Go

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

Rust

Rust這裏,我在嘗試靜態鏈接glibc的時候佩刀了奇怪的問題,翻了好久StackOverflow也沒有解決。所以我決定改成用musl。比如說在Arch Linux上就這麼用:

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

不過因爲用了musl,有時候可能會產生兼容問題。


© Licensed under CC BY-NC-SA 4.0 if not specified otherwise.
Email: dzshy [at] outlook [dot] com