在樹莓派上編譯安裝golang環境

Poisoner發表於2017-10-08

最近買了個pi,想在上面裝個golang環境,用於學習,發現網上資料都不全,當我在看《Go語言學習筆記》的時候,發現裡面有教如何在linux上編譯安裝Go,既然是原始碼自舉編譯,相信樹莓派上面也一樣可以支援,所以就試了一下:

背景:

  • golang暫時沒有針對arm的預編譯包,所以需要原始碼編譯golang。
  • 自Go1.5實現自舉(bootstrapping)以後,需要保留兩個版本的Go環境。建議初學者先下載C版本的1.4,用GCC完成編譯。
  • 自舉是指用編譯的目標語言編寫其編譯器,簡單點說就是用Go語言編寫Go編譯器。請提前安裝gcc、gdb、binutils等工具。

先安裝Go1.4.3

# 1.下載原始碼
$ wget https://storage.googleapis.com/golang/go1.4.3.src.tar.gz

# 2.解壓
$ sudo tar xf go1.4.3.src.tar.gz -C /usr/local/

# 3.因為最終要使用高版本的go,所以將其重新命名
$ sudo mv /usr/local/go /usr/local/go1.4.3

# 4.進入原始碼目錄,編譯
$ cd /usr/local/go1.4.3/src
$ sudo ./make.bash

# 5.測試
$ /usr/local/go1.4.3/bin/go version
go version go1.4.3 linux/arm複製程式碼

接下來下載golang原始碼,並用Go1.4進行編譯

# 1.下載原始碼(此處直接從github下載golang原始碼,因為不用fq)
$ cd /usr/local
$ sudo git clone https://github.com/golang/go

# 2.進入原始碼目錄,使用Go1.4編譯
$ cd /usr/local/go
$ sudo GOROOT_BOOTSTRAP=/usr/local/go1.4.3 ./make.bash

# 3.測試
$ /usr/local/go/bin/go version
go version devel +ca360c3992 Sat Oct 7 22:12:36 2017 +0000 linux/arm複製程式碼

編譯部署完成,現在設定工作目錄和環境變數

# 1.建立工作目錄
sudo su
cd / && mkdir -p /data/www/go

# 2.新增環境變數並使其生效
vim /etc/profile
# 新增如下設定項
export GOROOT=/usr/local/go
export GOPATH=/data/www/go
export PATH=$GOROOT/bin:$PATH

# 儲存退出,並使其生效
$ source /etc/profile

# 3.輸出環境變數,看是否生效
$ go env
GOARCH="arm"
GOBIN=""
GOEXE=""
GOHOSTARCH="arm"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/data/www/go"
GORACE=""
GOROOT="/usr/local/go"
GOTOOLDIR="/usr/local/go/pkg/tool/linux_arm"
GCCGO="gccgo"
GOARM="7"
CC="gcc"
GOGCCFLAGS="-fPIC -marm -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build406121462=/tmp/go-build -gno-record-gcc-switches"
CXX="g++"
CGO_ENABLED="1"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"複製程式碼

好了,編譯成功,收工。

如果不想這麼麻煩的話,可以在樹莓派上使用docker來構建golang環境,也是極好的。

參考:

  • 《Go語言學習筆記》 -- 雨痕

相關文章