Golang之跨平台交叉编译
交叉编译是在一个平台上生成另一个平台上的可执行代码。 同一个体系结构可以运行不同的操作系统;同样,同一个操作系统也可以在不同的体系结构上运行。
什么是交叉编译
- 众所周知,Golang开发的项目,部署起来非常简单,将编译好的二进制文件直接丢到服务器上就可以运行了;
- 开发过程中,每个开发者可能习惯用不同的平台开发,有人习惯用Mac,有人习惯windows等,但是因为操作系统和CPU架构的不同,不同平台上编译生成的二进制文件,是不能通用运行的,这时候就需要用到交叉编译;
Golang的交叉编译
在 Mac、Linux、Windows下的交叉编译:
- Mac 下编译 Linux 和 Windows 64位可执行程序
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build
- Linux 下编译 Mac 和 Windows 64位可执行程序
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build
- Windows 下编译 Mac 和 Linux 64位可执行程序
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
GOOS:目标平台的操作系统(darwin、freebsd、linux、windows)
GOARCH:目标平台的体系架构(386、amd64、arm)
交叉编译不支持 CGO 所以要禁用它
正在检测Disqus服务是否可用...