I saw a thread on cross-compilation in golang-nuts group recently and decided to replicate information here so I won’t forget and (maybe/hopefully) it’ll make it easier to discover for others how to cross-compile go applications.

I’m on OS X and my Go source code resides in ~/var/go . In this case what I do is:

> cd ~/var/go/src > CGO_ENABLED=0 GOOS=linux GOARCH=amd64 ./make.bash > CGO_ENABLED=0 GOOS=windows GOARCH=amd64 ./make.bash

And afterwards in different directory:

> CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o gr-linux64 goreplace > CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -o gr-win64 goreplace

This has some limitations - you can’t cross-compile applications, which are using CGo. In particular this means applications importing package net . Which is a shame, but still, cross-compilation has never been easier. :)

UPD. Also see comment on reddit for more.

UPD. In case you miss something, there is a question on StackOverflow with different wording, which may help.