Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mitchellh/Gox
A dead simple, no frills Go cross compile tool
https://github.com/mitchellh/Gox
Last synced: 20 days ago
JSON representation
A dead simple, no frills Go cross compile tool
- Host: GitHub
- URL: https://github.com/mitchellh/Gox
- Owner: mitchellh
- License: mpl-2.0
- Archived: true
- Created: 2013-11-17T03:11:35.000Z (almost 11 years ago)
- Default Branch: master
- Last Pushed: 2023-05-02T06:26:10.000Z (over 1 year ago)
- Last Synced: 2024-10-18T15:18:34.890Z (26 days ago)
- Language: Go
- Size: 123 KB
- Stars: 4,595
- Watchers: 82
- Forks: 355
- Open Issues: 68
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Gox - Simple Go Cross Compilation
Gox is a simple, no-frills tool for Go cross compilation that behaves a
lot like standard `go build`. Gox will parallelize builds for multiple
platforms. Gox will also build the cross-compilation toolchain for you.## Installation
To install Gox, please use `go get`. We tag versions so feel free to
checkout that tag and compile.```
$ go install github.com/mitchellh/gox@latest
...
$ gox -h
...
```## Usage
If you know how to use `go build`, then you know how to use Gox. For
example, to build the current package, specify no parameters and just
call `gox`. Gox will parallelize based on the number of CPUs you have
by default and build for every platform by default:```
$ 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
```Or, if you want to build a package and sub-packages:
```
$ gox ./...
...
```Or, if you want to build multiple distinct packages:
```
$ gox github.com/mitchellh/gox github.com/hashicorp/serf
...
```Or if you want to just build for linux:
```
$ gox -os="linux"
...
```Or maybe you just want to build for 64-bit linux:
```
$ gox -osarch="linux/amd64"
...
```And more! Just run `gox -h` for help and additional information.
## Versus Other Cross-Compile Tools
A big thanks to these other options for existing. They each paved the
way in many aspects to make Go cross-compilation approachable.* [Dave Cheney's golang-crosscompile](https://github.com/davecheney/golang-crosscompile) -
Gox compiles for multiple platforms and can therefore easily run on
any platform Go supports, whereas Dave's scripts require a shell. Gox
will also parallelize builds. Dave's scripts build sequentially. Gox has
much easier to use OS/Arch filtering built in.* [goxc](https://github.com/laher/goxc) -
A very richly featured tool that can even do things such as build system
packages, upload binaries, generate download webpages, etc. Gox is a
super slim alternative that only cross-compiles binaries. Gox builds packages in parallel, whereas
goxc doesn't. Gox doesn't enforce a specific output structure for built
binaries.