Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Cross-compiling Golang for ARM64 (aarch64) e.g. Pine64 on Fedora AMD64
  • Install Go for Linux the usual way on your main Linux box:
cd
wget https://storage.googleapis.com/golang/go1.6.2.linux-amd64.tar.gz
tar -zxvf go1.6.2.linux-amd64.tar.gz
sudo mv go /usr/local/
export GOROOT=/usr/local/go
mkdir -p ~/gitwork/go/src
mkdir ~/gitwork/go/bin
mkdir ~/gitwork/go/pkg
export GOPATH=~/gitwork/go
go version
  • Cross-compile Go for ARM64
mkdir gobuild
cd gobuild/
git clone https://go.googlesource.com/go
cd go
git checkout go1.6.2
cd src
export GOARCH=arm64
export GOROOT_BOOTSTRAP=/usr/local/go
export GOOS=linux
./make.bash
cd ../..
tar -cvf go1.6.2.linux-arm64.tar ./go
gzip go1.6.2.linux-arm64.tar 
  • Use sftp or scp on the ARM64 device to get the tar.gz file
  • Then install and set it up on ARM64:
tar -zxvf go1.6.2.linux-arm64.tar.gz
sudo mv go /usr/local/
cd /usr/local/go/bin/linux_arm64
sudo cp * ..
cd
export GOROOT=/usr/local/go
mkdir -p ~/gitwork/go/src
mkdir ~/gitwork/go/bin
mkdir ~/gitwork/go/pkg
export GOPATH=~/gitwork/go
go version
@bo01ean

This comment has been minimized.

Copy link

commented Oct 13, 2016

Also worked on my tegra tx1, thanks a bunch 🍺

@truedat101

This comment has been minimized.

Copy link

commented Mar 11, 2017

Thx, small mods for 1.8 done here: https://gist.github.com/truedat101/5898604b1f7a1ec42d65a75fa6a0b802 , will cover bootstrap build.

@truedat101

This comment has been minimized.

Copy link

commented Mar 11, 2017

I'm curious, just realized that the cross build retains the bootstrap platform's go binary (x86 presumably). Why is that? I see the last steps you have are to copy the linux_arm64 binary over the bootstrap one.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.