怎样在Ubuntu上交叉编译Golang
在Ubuntu上交叉编译Golang程序:一份实用指南
想在一台Ubuntu机器上,为Windows、macOS甚至ARM架构的Linux系统编译Go程序吗?交叉编译这个功能可以帮你实现,它让你无需在目标平台上安装Go环境,就能生成可运行的程序。下面这份指南,将带你一步步完成整个过程。
免费影视、动漫、音乐、游戏、小说资源长期稳定更新! 👉 点此立即查看 👈

1. 安装Go
第一步,自然是确保你的Ubuntu系统已经安装了Go语言环境。如果还没安装,打开终端,执行下面这两条命令就能轻松搞定:
sudo apt update
sudo apt install golang-go
2. 设置交叉编译环境
Go语言的交叉编译非常简洁,核心就在于设置两个环境变量:GOOS(目标操作系统)和GOARCH(目标架构)。这里列举几个常见的组合,方便你直接取用:
- Windows (64位):
GOOS=windows GOARCH=amd64 - Linux (ARM架构):
GOOS=linux GOARCH=arm - macOS (Intel芯片):
GOOS=darwin GOARCH=amd64 - FreeBSD (64位):
GOOS=freebsd GOARCH=amd64
3. 编译程序
环境变量准备好后,编译就是一条命令的事。假设你的Go项目就在当前目录,想要编译出一个Windows下的可执行文件,可以这样操作:
GOOS=windows GOARCH=amd64 go build -o myprogram.exe
同理,如果想编译出Linux ARM版本,命令则换成:
GOOS=linux GOARCH=arm go build -o myprogram
4. 验证编译结果
命令执行成功后,可执行文件就会出现在当前目录。如何确认它确实是我们想要的格式呢?使用file命令查看一下文件信息就清楚了:
file myprogram.exe # 查看Windows可执行文件信息
file myprogram # 查看Linux可执行文件信息
5. 运行程序
编译出来的程序,最终当然要在目标平台上运行。在Linux上运行Linux版本,命令很直接:
./myprogram
而Windows版本的可执行文件(例如myprogram.exe),则需要拷贝到Windows系统中,双击或在命令行中直接运行即可。
示例
光说不练假把式,我们用一个经典的“Hello, World!”程序来演示。假设你有这样一个hello.go文件:
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
现在,在Ubuntu上为Windows系统编译它:
GOOS=windows GOARCH=amd64 go build -o hello.exe hello.go
之后,把生成的hello.exe文件放到任何一台Windows电脑上,运行它就能看到问候语了。
注意事项
- 依赖库:务必检查你的程序是否依赖了某些特定平台的C库或系统功能,这可能会成为跨平台运行的障碍。
- 测试:交叉编译成功只是第一步,至关重要的一步是在真实的目标硬件和操作系统上进行充分测试,以确保功能与性能都符合预期。
- 交叉编译工具链:对于某些特殊的或嵌入式平台,Go内置的交叉编译可能不够,这时可能需要配置额外的外部工具链。
遵循以上步骤,在Ubuntu上为各种平台交叉编译Golang程序,其实是一件相当轻松高效的事情。
相关攻略
在 Ubuntu 上使用 PhpStorm 的提效要点 一 基础配置与性能优化 想让 PhpStorm 在 Ubuntu 上跑得又快又稳?基础配置是关键。首先,得确保代码检查和运行环境的一致性。在 Settings → Languages & Frameworks → PHP → CLI Inter
Ubuntu下PhpStorm查看日志的实用方法 在Ubuntu环境下使用PhpStorm,无论是排查IDE自身问题,还是调试PHP应用,快速找到并查看日志都是基本功。下面这份指南,帮你把几种核心方法一次性理清。 一 查看PhpStorm自身日志 PhpStorm运行过程中产生的日志,是诊断IDE卡
PHPStorm 与 Ubuntu 的兼容性与落地方案 一 兼容性与版本选择 要让PHPStorm在Ubuntu上跑得顺畅,版本搭配是关键。这里有个基本原则:尽量让软件和系统保持同步更新。 保持软件与系统同步更新:优先选用最新的PHPStorm稳定版,同时确保你的Ubuntu也是最新的稳定版或LTS
Ubuntu 下 PhpStorm 高效使用技巧 用好一个IDE,就像打磨一件趁手的兵器。在Ubuntu环境下驾驭PhpStorm,掌握一些核心技巧,能让你从“能用”跃升到“高效”。下面这份指南,就帮你梳理了从编辑、调试到性能调优的全链路要点。 一 高频编辑与效率提升 编码时的流畅感,很大程度上取决
Ubuntu 常用 Ja vaScript 库推荐 在 Ubuntu 环境下进行 Ja vaScript 开发,选择合适的工具库能事半功倍。下面这份清单,涵盖了从开发环境到前后端的核心选择,帮你快速搭建高效、稳定的技术栈。 一 开发环境与基础工具 运行时与包管理:Node js 搭配 npm 是主流
热门专题
热门推荐
Go 语言错误处理最佳实践:编写简洁、健壮且符合 Go 风格的代码指南 Go 语言采用多返回值(值 + error)实现显式错误处理,其标准做法是在每次函数调用后立即检查 err 是否为 nil;虽然忽略错误在语法上可行,但这违背了 Go 的设计哲学,极易导致隐蔽的 panic 或难以追踪的逻辑错误
Python Flask接口请求频率限制实战:Flask-Limiter防刷指南 Flask-Limiter 初始化配置详解:避免应用上下文错误 应用上下文配置不当,是开发者初次集成 Flask-Limiter 时最常见的错误。核心症结在于,限流器必须在 Flask 应用实例完全初始化且应用上下文就
2026年可能涨100倍的币会是哪些? 市场总是在寻找下一个爆发点。如果说2026年的加密货币市场存在百倍增长的可能,那么机会大概率会落在那些手握硬核技术、生态正在快速扩张、并能精准切入新兴应用场景的项目上。纵观行业趋势与数据,有五个名字反复被提及:Sui、Filecoin、Cosmos、Kaspa
torch cuda empty_cache() 仅释放未被张量引用的缓存显存,不回收仍被变量或模型持有的显存;需配合 del、zero_grad() 和 no_grad() 才能有效释放。 为什么 torch cuda empty_cache() 经常不起作用? 简单来说,这个函数的作用范围非常有
如何在 WooCommerce 中隐藏无缩略图的产品 本文详细讲解如何通过自定义代码过滤 WooCommerce 商品查询,自动排除未设置特色图像(产品主图)的商品,确保店铺前台仅展示带有有效产品图片的商品条目,提升页面美观度与专业感。 你是否希望自己的 WooCommerce 在线商店前台只呈现那





