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 所以要禁用它