Golang Linux、Windows、Mac 下交叉编译
2021-05-28 00:59
标签:length 64位 x64 操作系统 环境 交叉编译 windows 全面 lin Golang 支持交叉编译, 即同一份代码,在一个平台上生成,然后可以在另外一个平台去执行。 之前写过一篇 Golang windows下 交叉编译 感觉写的不够全面,这篇作为补充。 查看默认值 更改 查看更改后的值 Golang Linux、Windows、Mac 下交叉编译 标签:length 64位 x64 操作系统 环境 交叉编译 windows 全面 lin 原文地址:https://www.cnblogs.com/niuben/p/14773831.html前言
交叉编译
Mac 上编译
# 生成编译文件,在 Linux 中运行
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go
# 生成编译文件,在 Windows 中运行
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go
Linux 上编译
# 生成编译文件,在 Mac 中运行
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build main.go
# 生成编译文件,在 Windows 中运行
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go
Windows 上编译
Windows
中的 terminal
不支持 shell
, 这和 Mac
和 Linux
有点不同,这时可以写一个批处理程序,在里面去设置# 设置 Mac 编译环境
SET CGO_ENABLED=0
SET GOOS=darwin
SET GOARCH=amd64
go build main.go
# 设置 Linux 编译环境
SET CGO_ENABLED=0
SET GOOS=linux
SET GOARCH=amd64
go build main.go
参数说明
示例
>#go env
GOARCH="amd64"
GOBIN=""
GOCACHE="/root/.cache/go-build"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/data/go"
GOPROXY=""
GORACE=""
GOROOT="/usr/local/go"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
GCCGO="gccgo"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build171002917=/tmp/go-build -gno-record-gcc-switches"
>#
>#CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go env
GOARCH="amd64" # 变更了
GOBIN=""
GOCACHE="/root/.cache/go-build"
GOEXE=".exe"
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="windows" # 变更了
GOPATH="/data/go"
GOPROXY=""
GORACE=""
GOROOT="/usr/local/go"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
GCCGO="gccgo"
CC="gcc"
CXX="g++"
CGO_ENABLED="0" # 变更了
GOMOD=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-m64 -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build668031908=/tmp/go-build -gno-record-gcc-switches"
>#
>#go env
GOARCH="amd64" # 还原了
GOBIN=""
GOCACHE="/root/.cache/go-build"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux" # 默认值
GOPATH="/data/go"
GOPROXY=""
GORACE=""
GOROOT="/usr/local/go"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
GCCGO="gccgo"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build240557259=/tmp/go-build -gno-record-gcc-switches"
>#
文章标题:Golang Linux、Windows、Mac 下交叉编译
文章链接:http://soscw.com/index.php/essay/88438.html