交叉编译go源码-【转载】Golang交叉编译跨平台可执行程序(Mac、Linux、Wind

Golang支持交叉编译,也就是说,如果你在32位平台机器上开发,可以在64位平台上编译生成可执行程序。 mac下可以编译linux下的可执行程序或者windows下的可执行程序

交叉编译依赖于以下环境变量:

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

每个平台的 GOOS 和 GOARCH 参考

OS ARCH OS version
linux 386 / amd64 / arm >= Linux 2.6
darwin 386 / amd64 OS X (Snow Leopard + Lion)
freebsd 386 / amd64 >= FreeBSD 7
windows 386 / amd64 >= Windows 2000

跨平台编译步骤:

确定当前go环境

mac下的GOARCH和GOOS

使用 go env 查看

➜ ~ go env
GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/song/go"
GORACE=""
GOROOT="/usr/local/go"
GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"
CC="clang"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/v6/87fb06yx7yb46b79xlnj1y_m0000gn/T/go-build215820159=/tmp/go-build -gno-record-gcc-switches -fno-common"
CXX="clang++"
CGO_ENABLED="1"

首先确定当前编译环境的处理器架构,Linux mac可以使用uname -a查看

➜ ~ uname -a
Darwin localhost 16.3.0 Darwin Kernel Version 16.3.0: Thu Nov 17 20:23:58 PST 2016; root:xnu-3789.31.2~1/RELEASE_X86_64 x86_64
➜ ~

目标机Linux下,这是Docker下运行的镜像

[root@74780b70d0c0 Desktop]# uname -a
Linux 74780b70d0c0 4.9.4-moby #1 SMP Wed Jan 18 17:04:43 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
[root@74780b70d0c0 Desktop]#

这里可以看到这个服务器的架构是x86_64,也就是amd64。

● 6g 是amd64 的go 编译器,生成.6 文件。

● 386 通常使用8g 命令,该命令通常生成.8 格式的文件。

● 当然还有arm cpu的5g命令,

同样交叉编译go源码,amd64使用6l,386使用8l交叉编译go源码,arm使用5l链接器

了解前面开始交叉编译go的可执行程序

编译对应平台下的可执行文件

进入源码目录并执行:

Mac下编译Linux和Windows 64位可执行程序

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go

Linux下编译Mac和Windows 64位可执行程序

CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build main.go
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go

Windows下编译Mac和Linux 64位可执行程序

SET CGO_ENABLED=0
SET GOOS=darwin
SET GOARCH=amd64
go build main.go
SET CGO_ENABLED=0
SET GOOS=linux
SET GOARCH=amd64
go build main.go

不带上述参数的go build只是编译出适合开发环境的可执行文件。

如有疑问请联系站长Momo(非本文作者)

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 源码编译 交叉编译go源码-【转载】Golang交叉编译跨平台可执行程序(Mac、Linux、Wind https://www.wkzy.net/game/170402.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务