Golang笔记

GoLang 1.5 后简单的交叉编译方法

GoLang 1.5 后,让Linux和Windows 交叉编译变得简单。

在linux下编译windows版本:

GOOS=windows go build -v

在windows下编译linux版本:

GOOS=linux go build -v

编译mac的版本:

GOOS=darwin go build -v

-v是可选项,会把golang编译的过程打印出来。可以看出,golang会逐个编译依赖的库,然后生成可执行文件。

Golang 的跨平台交叉编译

在Linux下编译后在Windows系统中运行,或在32位下编译在64位下运行。

Go语言是编译型语言,可以将程序编译后在将其拿到其它操作系统中运行,此过程只需要在编译时增加对其它系统的支持。

1,首先进入$GOROOT/go/src 源码所在目录,执行如下命令创建目标平台所需的包和工具文件:

# 如果你想在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,执行完上面的操作后,现在可以编译将要在目标操作系统上运行的程序了:

# 如果你想在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 (转载注明出处)
关于GolangNote:记录在工作中使用golang 遇到、面临的相关问题及解决方法。如果你在这里获得一些知识或信息,解决你的编程问题,请考虑捐赠给不幸的人或者你喜欢的慈善机构,除捐赠外,种植树木、志愿服务或减少排碳的行为也很有益处。如果你有任何问题可以在下面 留言
Be the first to comment!
Captcha image
Relative Articles