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