最近買了個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語言學習筆記》 -- 雨痕