GOLANG如何在不同平台下交叉编译

Mac平台下的Go编译器编译生成的二进制文件,无法直接在Linux上执行。需要进行一下交叉编译,生成Linux下的可执行文件。下面介绍一下各个平台下的交叉编译代码。

Mac平台下的交叉编译

1
2
3
4
5
6
7
8
9
10
# 32位的Linux平台
CGO_ENABLED=0 GOOS=linux GOARCH=386 go build
# 64位的Linux平台
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build
# 32位的Windows平台
CGO_ENABLED=0 GOOS=windows GOARCH=386 go build
# 64位的Windows平台
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build
# ARM V6平台
CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=6 go build

Linux平台下的交叉编译

1
2
3
4
# 64位的Mac平台
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build
# 64位的Windows平台
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build

Windows平台下的交叉编译

1
2
3
4
5
6
7
8
9
10
11
# 64位的Mac平台
SET CGO_ENABLED=0
SET GOOS=darwin
SET GOARCH=amd64
go build

# 64位的Linux平台
SET CGO_ENABLED=0
SET GOOS=linux
SET GOARCH=amd64
go build

总结

GOOS:目标平台的操作系统(darwin、freebsd、linux、windows)

GOARCH:目标平台的体系架构(386、amd64、arm)

CGO_ENABLED:交叉编译不支持 CGO 所以要禁用它

avatar

chilihotpot

You Are The JavaScript In My HTML