End of life notice
With the release of Go 1.6 the Go team have made available official ARMv61 binary releases. Thus, this page is now end of life and will no longer be updated. The existing Go 1.4.x and 1.5.x releases will remain for a time to assist people bootstrapping ARM systems.
For other arm variants, I recommend cross compiling or building from source:
- Build from source, http://dave.cheney.net/2015/09/04/building-go-1-5-on-the-raspberry-pi
- Cross compile, http://dave.cheney.net/2015/08/22/cross-compilation-with-go-1-5
Notes
- ARMv6 is upwards compatible with ARMv7 systems. There is no material performance difference running an ARMv6 binary on an ARMv7 system.
These are unofficial tarball builds of the Go language distribution prepared for the convenience of developers wanting to experiment with Go on ARM platforms. For official tarballs and installers, please see the golang.org download site.
For installation instructions, please see the installation instructions from the golang.org website, substituting the download URL as necessary.
Please help the Go project by testing your Go programs with the new tool chain and libraries, and report any problems using the issue tracker, http://golang.org/issue/new.
Choosing the right version
There are three families; ARMv5, ARMv6, ARMv7, and two flavours; multiarch and non multiarch.
How can I tell which family my host uses ?
Look at the Processor
line in the output of cat /proc/cpuinfo
. In general code for older ARM systems will work on later systems, but not the other way around.
How can I tell if my distribution uses multiarch ?
Multiarch is a way of naming libraries and binaries on Debian based systems (this includes Raspbian and Ubuntu) to allow versions for different CPU families to be present on the same system. This specifically impacts Go programs as the linker, 5l
, needs to embed the correct location of the dynamic loader into the final executable. Go 1.1 now supports cgo
on ARM platforms, so will produce a dynamically linked binary whenever the net
, os/user
or other cgo
based packages are imported. As the go
tool itself uses those packages, it is a dynamically linked binary, so you need to choose the right flavour to match your distribution.
- If your distribution has the file
/lib/ld-linux-armhf.so.3
or/lib/ld-linux-armel.so.3
, your distribution uses multiarch, you should use the multiarch flavour. This includes distributions like Debian, Ubuntu, ChromeOS and Raspbian. - If your distribution has the file
/lib/ld-linux.so.3
, your distribution does not use multiarch, you should not use the multiarch flavour. Distributions like Arch Linux ARM do not use multiarch. - If your distribution has both, then you can use either flavour.
If you find that the go
tool is not executable
% /usr/local/go/bin/go bash: /usr/local/go/bin/go: No such file or directory
please try the other flavour.
Go 1.5.3 released January 15th, 2016
Due to a change in the Go release process for Go 1.5, only ARMv6 builds are available. ARMv6 builds are upwardly compatible with ARMv7.
ARMv6/v7 (multiarch only)
This release should be compatible with all Raspberry Pi models.
multiarch: go1.5.3.linux-arm.tar.gz
sha1sum 91351355746af99659366d12dc85de11e8d14522
For other arm variants, I recommend cross compiling or building from source:
- Build from source, http://dave.cheney.net/2015/09/04/building-go-1-5-on-the-raspberry-pi
- Cross compile, http://dave.cheney.net/2015/08/22/cross-compilation-with-go-1-5
You can also follow issue 13066 for more details.
go1.4.2 released February 18th, 2015
These tarballs were prepared from the go1.4.2
release tag using the official distribution tool.
ARMv5
- non multiarch: go1.4.2.linux-arm~armv5-1.tar.gz sha1sum 1bcfc8ef9c2aa381722b71b8c8d83cb58e973116
ARMv6 (Raspberry Pi, etc)
- multiarch: go1.4.2.linux-arm~multiarch-armv6-1.tar.gz sha1sum c7153f2ca102be6e1267468350b4ef1769d105db
ARMv7 (Raspberry Pi 2, Pandaboard, Chromebook, etc)
- non multiarch: go1.4.2.linux-arm~armv7-1.tar.gz sha1sum e036706f53918254e3e3e61eeea8da1bf0fb8901
- multiarch: go1.4.2.linux-arm~multiarch-armv7-1.tar.gz sha1sum 607573c55dc89d135c3c9c84bba6ba6095a37a1e