Gox : 简单实在的Go平台交叉编译工具

简介: Gox 是一个简单的,不花俏的Go平台交叉编译工具,它的用处就和标准的 go build 一样。Gox 会并行地为多种平台编译。Gox 同时也提供了一套交叉编译工具链。

Gox 是一个简单的,不花俏的Go平台交叉编译工具,它的用处就和标准的 go build 一样。Gox 会并行地为多种平台编译。Gox 同时也提供了一套交叉编译工具链。

Gox 项目地址:https://github.com/mitchellh/gox


安装

为了安装 Gox,请使用 go get。我们已经为版本打上了标签,所以可以随便切换标签进行编译:

$ go get github.com/mitchellh/gox

...

$ gox -h

...


用法

在你使用 Gox 之前,你必须先有一套交叉编译工具链。Gox 可以自动帮你完成这个。你需要做的只是运行(每次更新 Go 都要这样做这步):

$ gox -build-toolchain

...

当你完成这个,你可以已经准备好进行交叉编译了。

如果你知道怎么去使用 go build, 那么你也知道怎么去使用 Gox 了。例如,编译当前的项目,无需提供参数,只需要调用 gox。Gox 就会根据 CPU 的数量并行地为各个平台编译:

$ gox

Number of parallel builds: 4

--> darwin/386: github.com/mitchellh/gox

--> darwin/amd64: github.com/mitchellh/gox

--> linux/386: github.com/mitchellh/gox

--> linux/amd64: github.com/mitchellh/gox

--> linux/arm: github.com/mitchellh/gox

--> freebsd/386: github.com/mitchellh/gox

--> freebsd/amd64: github.com/mitchellh/gox

--> openbsd/386: github.com/mitchellh/gox

--> openbsd/amd64: github.com/mitchellh/gox

--> windows/386: github.com/mitchellh/gox

--> windows/amd64: github.com/mitchellh/gox

--> freebsd/arm: github.com/mitchellh/gox

--> netbsd/386: github.com/mitchellh/gox

--> netbsd/amd64: github.com/mitchellh/gox

--> netbsd/arm: github.com/mitchellh/gox

--> plan9/386: github.com/mitchellh/gox

或者,你只想编译某个项目和子项目:

$ gox ./...

...

或者,你想仅仅为 linux 编译:

$ gox -os="linux"

...

或者,你仅仅只想为 64 位的 linux 编译:

$ gox -osarch="linux/amd64"

...

还有更多的选项,可以通过 gox -h 查看帮助。


和其他交叉编译工具的比较

非常感谢这些工具为我们提供了更多的选择,它们为 go 平台的交叉编译工具提供做了很多方面的贡献.

  • Dave Cheney的交叉编译器: Gox 可以为多种平台编译,所以也能容易地运行在各种 Go 支持的平台上。但Dave的那个需要一个 shell 来运行。Gox 支持并行地编译,但 Dave 的只是按顺序地编译。Gox 也能非常方便地使用的内置的 arch 系统的内置过滤工具。
  • goxc:它是一个功能丰富的工具,能编译系统项目,上传二进制文件,产生下载页面等;相较之下,Gox 在交叉编译二元文件方面稍稍弱些。但 Gox 能并行地编译项目,而 goxc 不能。Gox 也没有强制指定编译二元文件时输出结果的格式。


相关文章
|
测试技术 API 开发者
【Docker项目实战】在Docker环境下部署go-file文件分享工具
【2月更文挑战第15天】在Docker环境下部署go-file文件分享工具
347 1
|
网络协议 Linux Go
分享一个go开发的工具-SNMP Server
分享一个go开发的工具-SNMP Server
310 0
|
6月前
|
SQL 监控 Go
新一代 Cron-Job分布式调度平台,v1.0.8版本发布,支持Go执行器SDK!
现代化的Cron-Job分布式任务调度平台,支持Go语言执行器SDK,多项核心优势优于其他调度平台。
99 8
|
Linux 测试技术 编译器
在go程序中的交叉编译
【7月更文挑战第9天】本文介绍Go 交叉编译允许在一种平台上构建适用于多平台的二进制文件。`go build -cover`用于覆盖率分析,`-coverpkg`控制分析的包范围,生成的二进制文件运行后,覆盖率数据会写入`GOCOVERDIR`指定的目录。
412 14
在go程序中的交叉编译
|
8月前
|
算法 测试技术 Go
Go 1.24.0 重磅发布:新特性、新工具,开发者必看!
`Go 1.24.0` 已正式发布,带来诸多改进和新特性。语言层面上,泛型类型别名现已被完全支持;性能方面,通过优化 `map` 实现和内存分配,减少了 2-3% 的 CPU 开销;工具链新增模块工具依赖跟踪及测试分析器;标准库增加了弱引用包、FIPS 140-3 合规机制等;WebAssembly 支持也得到了增强。快来下载体验吧!
415 7
|
11月前
|
JSON 监控 安全
go语言选择合适的工具和库
【10月更文挑战第17天】
138 2
|
算法 测试技术 Go
|
Shell Go
Go 语言Air 工具使用入门
在Go开发中,频繁的手动重启应用以加载新代码既耗时又低效。为此,我们引入了Air——一款专为Go项目设计的自动重载工具。Air通过监听文件变化,实现代码更改后的自动编译与运行,极大提升了开发效率。本文将指导你完成Air的安装与配置,包括如何启动Air、忽略临时文件以及理解其工作原理,让Go项目开发更加流畅高效。
214 3
|
Kubernetes 数据可视化 Java
|
关系型数据库 MySQL Go
Go - 代码生成工具
Go - 代码生成工具
91 3