GoLang 1.5 后,让Linux和Windows 交叉编译变得简单。
在linux下编译windows版本:
1
GOOS=windows go build -v
在windows下编译linux版本:
1
GOOS=linux go build -v
编译mac的版本:
1
GOOS=darwin go build -v
-v
是可选项,会把 golang 编译的过程打印出来。可以看出,golang 会逐个编译依赖的库,然后生成可执行文件。
Golang 的跨平台交叉编译
在 Linux 下编译后在 Windows 系统中运行,或在32位下编译在64位下运行。
Go语言是编译型语言,可以将程序编译后在将其拿到其它操作系统中运行,此过程只需要在编译时增加对其它系统的支持。
- 首先进入$GOROOT/go/src 源码所在目录,执行如下命令创建目标平台所需的包和工具文件:
1
2
3
4
5
6
7
8
9
10
11
12
13
# 如果你想在Windows 32位系统下运行
$ cd $GOROOT/src
$ CGO_ENABLED=0 GOOS=windows GOARCH=386 ./make.bash
# 如果你想在Windows 64位系统下运行
$ cd $GOROOT/src
$ CGO_ENABLED=0 GOOS=windows GOARCH=amd64 ./make.bash
# 如果你想在Linux 32位系统下运行
$ cd $GOROOT/src
$ CGO_ENABLED=0 GOOS=linux GOARCH=386 ./make.bash
# 如果你想在Linux 64位系统下运行
$ cd $GOROOT/src
$ CGO_ENABLED=0 GOOS=linux GOARCH=amd64 ./make.bash
2,执行完上面的操作后,现在可以编译将要在目标操作系统上运行的程序了:
1
2
3
4
5
6
7
8
9
# 如果你想在Windows 32位系统下运行
$ CGO_ENABLED=0 GOOS=windows GOARCH=386 go build test.go
# 如果你想在Windows 64位系统下运行
$ CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build test.go
# 如果你想在Linux 32位系统下运行
$ CGO_ENABLED=0 GOOS=linux GOARCH=386 go build test.go
# 如果你想在Linux 64位系统下运行
$ CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build test.go
上面命令中的 CGO_ENABLED = 0
表示设置 CGO 工具不可用;GOOS
表示程序构建环境的目标操作系统(Linux、Windows);GOARCH
表示程序构建环境的目标计算架构(32位、64位)。 现在你可以在相关目标操作系统上运行编译后的程序了。
注意:
- 该方式暂时不支持
CGO
。 - 这里并不是重新编译 Go,因为安装 Go 的时候,只是编译了本地系统需要的东西,而需要跨平台交叉编译,需要在 Go 中增加对其他平台的支持,所以会有
./make.bash
这么一个过程。
本文网址: https://golangnote.com/topic/42.html 转摘请注明来源