GolangNote

Golang笔记

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

Permalink

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

golang 交叉编译

在linux下编译windows版本:

Bash: windows
1
GOOS=windows go build -v

在windows下编译linux版本:

Bash: linux
1
GOOS=linux go build -v

编译mac的版本:

Bash: darwin
1
GOOS=darwin go build -v

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

Golang 的跨平台交叉编译

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

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

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

Bash: 创建目标平台所需的包和工具文件
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,执行完上面的操作后,现在可以编译将要在目标操作系统上运行的程序了:

Bash: 编译目标操作系统
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 这么一个过程。

Related articles

go交叉编译方法

假设开发环境是ubuntu 32 位,目标机是ubuntu 64 位,下面是交叉编译的示例...

Golang实现简单的Socks5代理

Socks5 代理较 `http/https` 代理有较好的性能,下面是借鉴某个著名开源软件的 local 实现的简单代理。...

golang rot13 简单加密字符

ROT13 是一种简单的字符加密方法,把 26 个英文字母的前 13 个字母与后 13 个字母的编码互换。...

Write a Comment to "GoLang 1.5 后简单的交叉编译方法"

Submit Comment Login
Based on Golang + fastHTTP + sdb | go1.16.3 Processed in 0ms