导读:本期聚焦于小伙伴创作的《如何在Golang中配置跨平台编译环境生成Windows、Mac、Linux可执行文件》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《如何在Golang中配置跨平台编译环境生成Windows、Mac、Linux可执行文件》有用,将其分享出去将是对创作者最好的鼓励。

Golang本身内置了跨平台编译的支持,不需要额外安装复杂的依赖工具,只需要通过简单的环境变量配置和编译命令调整,就可以在一台设备上生成多个不同平台的可执行文件,非常适合需要多系统部署的项目场景。

如何在Golang中配置跨平台编译环境生成Windows、Mac、Linux可执行文件

Golang跨平台编译的核心原理

Golang的编译器会根据GOOSGOARCH两个环境变量来确定目标编译平台,其中GOOS指定目标操作系统,GOARCH指定目标架构。我们只需要修改这两个变量的值,再执行常规的go build命令,就可以生成对应平台的可执行文件。

常见平台对应的参数值

目标系统GOOS值常见GOARCH值
Windowswindowsamd64、386
Macdarwinamd64、arm64
Linuxlinuxamd64、386、arm64

不同开发系统下的编译操作

在Linux或Mac系统下编译

如果当前开发环境是Linux或者Mac,默认情况下编译生成的是当前系统的可执行文件,要生成其他平台的文件,只需要在编译前临时设置对应的环境变量即可。

首先准备一个简单的测试代码,保存为main.go

package main

import "fmt"

func main() {
    fmt.Println("这是跨平台编译的测试程序")
}

生成Windows 64位可执行文件的命令如下:

# 编译Windows 64位可执行文件,后缀为.exe
GOOS=windows GOARCH=amd64 go build -o test_win.exe main.go

生成Mac 64位可执行文件的命令如下:

# 编译Mac 64位可执行文件,Mac下可执行文件没有固定后缀
GOOS=darwin GOARCH=amd64 go build -o test_mac main.go

生成Linux 64位可执行文件的命令如下:

# 编译Linux 64位可执行文件
GOOS=linux GOARCH=amd64 go build -o test_linux main.go

在Windows系统下编译

如果开发环境是Windows,使用命令提示符或者PowerShell设置环境变量的方式略有不同,需要使用set命令临时设置变量。

生成Linux 64位可执行文件的命令如下:

# 命令提示符下执行
set GOOS=linux
set GOARCH=amd64
go build -o test_linux main.go

如果使用PowerShell,命令如下:

# PowerShell下执行
$env:GOOS="linux"
$env:GOARCH="amd64"
go build -o test_linux main.go

批量生成多平台可执行文件

如果每次手动执行单个编译命令比较繁琐,可以写一个简易的脚本批量生成所有平台的可执行文件。以下是Linux/Mac下的批量编译脚本示例:

#!/bin/bash
# 定义需要编译的平台列表
platforms=(
    "windows/amd64"
    "darwin/amd64"
    "linux/amd64"
)

# 遍历平台列表执行编译
for platform in "${platforms[@]}"
do
    # 分割操作系统和架构
    GOOS=${platform%/*}
    GOARCH=${platform#*/}
    # 定义输出文件名
    output_name="test_${GOOS}_${GOARCH}"
    if [ "$GOOS" = "windows" ]; then
        output_name="${output_name}.exe"
    fi
    # 执行编译
    echo "正在编译 ${GOOS} ${GOARCH} 平台文件"
    GOOS=$GOOS GOARCH=$GOARCH go build -o $output_name main.go
    if [ $? -eq 0 ]; then
        echo "编译成功:$output_name"
    else
        echo "编译失败:${GOOS} ${GOARCH}"
    fi
done

注意事项

  • 如果项目中使用了CGO相关的代码,跨平台编译需要目标平台的C编译器支持,否则可能会出现编译错误,这时候可以选择关闭CGO,设置CGO_ENABLED=0再编译。
  • 不同架构的可执行文件不能混用,比如amd64架构编译的文件不能在386架构的系统上运行,需要根据目标设备的实际架构选择对应的GOARCH值。
  • 编译生成的文件可以直接拷贝到目标平台运行,不需要在目标平台安装Golang环境。

Golang跨平台编译Windows可执行文件Mac可执行文件Linux可执行文件修改时间:2026-07-16 23:24:32

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。