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.
To install Gox, please use go get
. We tag versions so feel free to checkout that tag and compile.
$ go get github.com/mitchellh/gox ... $ gox -h ...
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.
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 - 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 - 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.