This is variable to go release cycle, go versions and package support, as well as Apple's gcc and llvm compiling. Most of this is adapted from Paul Crawford's 'Go Cross Compilation on Mavericks' and goxc package README.
brew update brew tap homebrew/dupes brew install apple-gcc42 cd /usr/bin sudo mv gcc gcc_mavericks sudo ln -s /usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/gcc-4.2 gcc gcc
gcc should return
i686-apple-darwin11-gcc-4.2.1: no input files.
Go build from source
In this case I'll build latest release candidate for easier support from the
goxc package; see the note in README about using
go1.2rc5. Otherwise, I've noted where the stable current release would used.
curl https://go.googlecode.com/archive/go1.2rc5.zip #point to stable current tar -zxvf go1.2rc5.zip #untar stable current cd go-b3d5a20b070a/src #normally this would be stable current ./all.bash #build go
If using non-current release the path to go binary in that specific release needs to be added. Otherwise, the path would look something like
export PATH=$PATH:/Users/jbowles/go/bin or wherever you built go.
Asking for the Go version should return
go version go1.2rc5 darwin/amd64 #or whatever version was built.
go get code.google.com/p/go.tools/cmd/godoc #documentation tool go get github.com/laher/goxc #get goxc package goxc -t #compile against supported platforms
goxc -t does can be found in detail on the github page, but basically it compiles and builds the complete toolchain for ALL go supported platforms.
On the most recent build this includes packages, commands, compilers, and Go bootstrap tool
- for host, darwin/amd64
- for darwin/386
- for linux/386
- for linux/amd64
- for linux/arm
- for freebsd/386
- for freebsd/amd64
- for freebsd/arm
- for openbsd/386
- for openbsd/amd64
- for windows/386
- for windows/amd64
- for netbsd/386
- for netbsd/amd64
- for netbsd/arm
- for plan9/386
And looking in
/Users/jbowles/go-b3d5a20b070a/bin we find:
I've used a custom Go branch to illustrate this, so working back from the custom example to the more standard stable release should be easy.