GOLANG 的交叉编译以及 strip

交叉编译需要知道支持的 GOOS 以及 GOARCH,我们运行 go tool dist list 就可以得到支持的OS 以及硬件平台的组合

$ go tool dist list|paste - - - - -
aix/ppc64       android/386     android/amd64   android/arm     android/arm64
darwin/386      darwin/amd64    darwin/arm      darwin/arm64    dragonfly/amd64
freebsd/386     freebsd/amd64   freebsd/arm     js/wasm linux/386
linux/amd64     linux/arm       linux/arm64     linux/mips      linux/mips64
linux/mips64le  linux/mipsle    linux/ppc64     linux/ppc64le   linux/s390x
nacl/386        nacl/amd64p32   nacl/arm        netbsd/386      netbsd/amd64
netbsd/arm      openbsd/386     openbsd/amd64   openbsd/arm     plan9/386
plan9/amd64     plan9/arm       solaris/amd64   windows/386     windows/amd64
windows/arm

检查当前的环境变量设置:

$ go env GOOS GOARCH

编译时把 -s -w 传递进 ldflags 我们就可以得到 strip 的二进制文件,以下是 aliyun-cli 项目的编译

$ go build -ldflags "-s -w -X 'github.com/aliyun/aliyun-cli/cli.Version=3.0.37'" -o out/aliyun main/main.go

香橙派上,只要 export GOARCH=arm64 就可以编译成功 aliyun cli 了。 然后就可以通过命令行来自动注册香橙派的 DNS 了。