golang交叉编译

Linux系统下编译Windows64位系统、Mac系统可执行程序

CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build main.go

Mac系统下编译Linux系统、Windows64位系统可执行程序

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go

Windows系统下编译Linux系统、Mac系统可执行程序

SET CGO_ENABLED=0
SET GOOS=darwin
SET GOARCH=amd64
go build main.go
SET CGO_ENABLED=0
SET GOOS=linux
SET GOARCH=amd64
go build main.go
param.png
  • 交叉编译是不支持CGO的,所以需要禁用掉,也就是说如果你的代码中存在C代码,是编译不了的。
  • 需要CGO支持的,要将CGO_ENABLED的0改为1,也就是CGO_ENABLED=1,此外还需要设置编译器。
    -github上有这个工具:https://github.com/karalabe/xgo
    它是一个docker镜像,里面集成了各种平台的编译器,按照它的教程,很轻松的可以编译出各个平台的二进制文件,
    参考链接1
    参考链接2

推荐阅读更多精彩内容