Go语言Mac、Linux、Windows 下交叉编译
场景
在很多时候,由于开发的方便,会有这样的场景出现,使用Mac开发或使用Windows开发,需要编译成Linux系统的执行文件,那么如何做到?Go语言提供了非常方便的命令行操作,即可实现。
1、Mac下编译Linux, Windows
# Linux
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build filename.go
# Windows
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build filename.go
2、Linux下编译Mac, Windows
# Mac
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build filename.go
# Windows
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build filename.go
3、Windows下编译Mac, Linux
# Mac
SET CGO_ENABLED=0
SET GOOS=darwin
SET GOARCH=amd64
go build filename.go
# Linux
SET CGO_ENABLED=0 或者 go env -w CGO_ENABLED=0
SET GOARCH=amd64 或者 go env -w GOARCH=amd64
SET GOOS=linux 或者 go env -w GOOS=linux 切回windows go env -w GOOS=windows
go build -o filename main.go
# 查看是否生效
go env
或者
go env |grep GOOS
4、参数说明
查看环境:
$> go env
set GOARCH=amd64
set GOBIN=
set GOCACHE=C:\Users\bboyHan\AppData\Local\go-build
set GOEXE=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOOS=linux
set GOPATH=C:\Go\workspace\study\src\
set GORACE=
set GOROOT=C:\Go
set GOTMPDIR=
set GOTOOLDIR=C:\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\bboyHan\AppData\Local\Temp\go-build162645406=/tmp/go-build -gno-record-gcc-switches
[Haima的博客]
http://www.cnblogs.com/haima/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构