go交叉编译arm64

golang一份代码可以编译出在不同系统和cpu架构运行的二进制文件。go也提供了很多环境变量,我们可以设置环境变量的值,来编译不同目标平台。

GOOS=linux GOARCH=$go_arch go build -ldflags "-s -w" mydaemon.go

指定叉编译目标:
GOARCH 目标架构(编译后的目标架构)的处理器架构(386、amd64、arm)
GOOS 目标平台(编译后的目标平台)的操作系统(darwin、freebsd、linux、windows)

(一)Windows 下编译Linux 64位可执行程序:

    SET CGO_ENABLED=0  //不设置也可以,原因不明
    SET GOOS=linux
    SET GOARCH=amd64
    通过 go env 查看设置是否成功。

(二)Linux 下编译Windows可执行程序:

    export CGO_ENABLED=0
    export GOOS=windows
    export GOARCH=amd64
    通过 go env 查看设置是否成功。
    go build hello.go

GOOS和GOARCH都有多个选项,可组合