静态链接Go和Rust

2021-05-21

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,有时候可能会产生兼容问题。



Email: i (at) mistivia (dot) com