GO交叉编译

在Windows10环境下,使用Golang 1.10.3进行交叉编译,生成64位Linux可执行文件。通过设置环境变量GOOS和GOARCH,可以实现不同平台间的编译,例如Mac编译Linux或Windows程序,以及Linux编译Mac程序。该方法适用于Golang 1.13及以上版本。
摘要由CSDN通过智能技术生成

OS环境:windows10
Golang:1.10.3
首先查看golang的环境变量:

go env
set GOARCH=amd64
set GOBIN=E:\work\golang\goproj\bin
set GOCACHE=C:\Users\soft\AppData\Local\go-build
set GOEXE=.exe
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOOS=windows
set GOPATH=E:\work\golang\goproj
set GORACE=
set GOROOT=D:\Go
set GOTMPDIR=
set GOTOOLDIR=D:\Go\pkg\tool\windows_amd64
set GCCGO=gccgo
set CC=gcc
set CXX=g++
set CGO_ENABLED=1
set CGO_CFLAGS=-g -O2
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-g -O2
set CGO_FFLAGS=-g -O2
set CGO_LDFLAGS=-g -O2
set PKG_CONFIG=pkg-config
set GOGCCFLAGS=-m64 -mthreads -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=C:\Users\soft\AppData\Local\Temp\go-build811714830=/tmp/go-build -gno-record-gcc-switches

打开cmd窗口,进入到工项目的src目录。
目标应用为64位的linux
设置环境变量:

SET CGO_ENABLED=0
SET GOOS=linux
SET GOARCH=amd64

设置后,GO环境变量如下:

go env
set GOARCH=amd64
set GOBIN=E:\work\golang\goproj\bin
set GOCACHE=C:\Users\soft\AppData\Local\go-build
set GOEXE=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOOS=linux
set GOPATH=E:\work\golang\goproj
set GORACE=
set GOROOT=D:\Go
set GOTMPDIR=
set GOTOOLDIR=D:\Go\pkg\tool\windows_amd64
set GCCGO=gccgo
set CC=gcc
set CXX=g++
set CGO_ENABLED=0
set CGO_CFLAGS=-g -O2
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-g -O2
set CGO_FFLAGS=-g -O2
set CGO_LDFLAGS=-g -O2
set PKG_CONFIG=pkg-config
set GOGCCFLAGS=-fPIC -m64 -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=C:\Users\soft\AppData\Local\Temp\go-build477050202=/tmp/go-build -gno-record-gcc-switches

运行go build -o test 会在src下面生成一个linux环境下的可执行文件test

Mac下编译Linux, Windows平台的64位可执行程序:

1 CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o test 
2 CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -o test 

Linux下编译Mac, Windows平台的64位可执行程序:

1 CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -o test 
2 CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -o test 

GOOS:目标可执行程序运行操作系统,支持 darwin,freebsd,linux,windows
GOARCH:目标可执行程序操作系统构架,包括 386,amd64,arm

以下方法适用于1.13及其以上版本

go help env
usage: go env [-json] [-u] [-w] [var ...]

Env prints Go environment information.

By default env prints information as a shell script
(on Windows, a batch file). If one or more variable
names is given as arguments, env prints the value of
each named variable on its own line.

The -json flag prints the environment in JSON format
instead of as a shell script.

The -u flag requires one or more arguments and unsets
the default setting for the named environment variables,
if one has been set with 'go env -w'.

The -w flag requires one or more arguments of the
form 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值