Go 不同平台下交叉编译方式

golang的一大特性就是跨平台编译
有时候我们会遇到在windows里写代码,然后把程序拿到linux里运行的情况。跨平台编译的便利性会使你喜欢上golang这个语言。

所谓跨平台编译,就是在一个操作系统下生成另一个操作系统下可执行的文件。
你只需要在编写代码的操作系统下设置一些参数即可达到这个目的。

1
2
3
4
5
# Windows下编译linux的64位可执行文件
> SET CGO_ENABLED=0
> SET GOOS=linux
> SET GOARCH=amd64
> go build hello.go

以helloworld作为示例

1
2
3
4
5
6
7
package main

import "fmt"

func main() {
fmt.Println("hello world.")
}

go代码编写完成后,执行go build hello.go,会在目录下生成hello.exe,执行上述命令后,会生成linux下的可执行文件。

图片1

红框内是linux下的可执行文件.png

图片2

记录不同平台下交叉编译的命令

1
2
3
4
5
6
7
8
9
10
11
12
13
# Windows下编译Mac平台64位可执行程序:
SET CGO_ENABLED=0
SET GOOS=darwin
SET GOARCH=amd64
go build xxx.go

# Linux下编译 Mac 和 Windows 平台64位可执行程序:
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build xxx.go
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build xxx.go

# Mac 下编译 Linux 和 Windows 平台 64位 可执行程序
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build xxx.go
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build xxx.go

GOOS:目标可执行程序运行操作系统,支持darwin、freebsd、linux、windows
GOARCH:目标可执行程序操作系统构架,包括386、amd64、arm

-------------本文结束感谢您的阅读-------------