LOADING

正在加载

Golang交叉编译

壹 介绍

Golang其中一个优势就是支持交叉编译,顾名思义就是可以在一个平台编译其他平台的可执行程序。
一般情况下,Golang的交叉编译有三个主要的参数控制:

CGO_ENABLED:该参数是允许调用C/C++的参数,但是在交叉编译中不支持 CGO 所以要禁用它
GOOS:该参数是编译后的可执行程序适配的目标平台操作系统(darwin、freebsd、linux、windows)
GOARCH:该参数是编译后的可执行程序适配的目标平台的体系架构(386、amd64、arm)

贰 使用Golang的交叉编译

  • Windows下编译MacLinux 64位可执行程序
# 网上用的SET,但是我发现我用SET不行,我用的是go env -w
go env -w CGO_ENABLED=0
go env -w GOOS=darwin
go env -w GOARCH=amd64
go build main.go

go env -w CGO_ENABLED=0
go env -w GOOS=linux
go env -w GOARCH=amd64
go build main.go
  • Mac下编译LinuxWindows 64位可执行程序
export CGO_ENABLED=0 
export GOOS=linux 
export GOARCH=amd64 
go build main.go

export CGO_ENABLED=0 
export GOOS=windows 
export GOARCH=amd64 
go build main.go
  • Linux下编译LinuxWindows 64位可执行程序
export CGO_ENABLED=0 
export GOOS=darwin 
export GOARCH=amd64 
go build main.go

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

上面的是amd64的,当然其他架构的也可以,根据实际情况选择,编译完后,放到对应系统平台中即可运行(PS:权限问题)。

叁 参考

大白话 golang 教程-25-打包编译信息的套路
Go交叉编译(跨平台编译)

avatar
小C&天天

修学储能 先博后渊


今日诗句