在ARM平台上編譯安裝golang

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。


golang也就是go語言,現在已經發行到1.4.1版本了,語言特性優越性和背後google強大靠山什麼的就不多說了。golang的官方提供了多個平台上的二進位安裝包,遺憾的是並非沒有發布ARM平台的二進位安裝包。ARM平台沒辦法直接從官網下載二進位安裝包來安裝,好在golang是支援多平台並且開源的語言,因此可以通過直接在ARM平台上編譯原始碼來安裝。整個過程主要包括編譯工具配置、擷取golang原始碼、設定golang編譯環境變數、編譯、配置golang運行環境變數等步驟。

註:本文選用樹莓派做測試,因為樹莓派是基於ARM平台的。


1、編譯工具配置


據說下個版本的golang編譯工具要使用golang自己來寫,但目前還是使用C編譯工具的。因此,首先要配置好C編譯工具:

1.1 在Ubuntu或Debian平台上可以使用sudo apt-get install gcc libc6-dev命令安裝,樹莓派的RaspBian系統是基於Debian修改的,所以可以使用這種方法安裝。

1.2 在RedHat或Centos 6平台上可以使用sudo yum install gcc libc-devel命令安裝。

安裝完成後可以輸入 gcc --version命令驗證是否成功安裝。


2、擷取golang原始碼


2.1 直接從官網下載原始碼壓縮包。


golang官網提供golang的原始碼壓縮包,可以直接下載,最新的1.4.1版本原始碼連結:https://storage.googleapis.com/golang/go1.4.1.src.tar.gz


2.2 使用git工具擷取。


golang使用git版本管理工具,也可以使用git擷取golang原始碼。推薦使用這個方法,因為以後可以隨時擷取最新的golang原始碼。

2.2.1 首先確認ARM平台上已經安裝了git工具,可以使用git --version命令確認。一般linux平台都安裝了git,沒有的話可以自行安裝,不同平台的安裝方法可以參考:http://git-scm.com/download/linux

2.2.2 複製遠程golang的git倉庫到本地

在終端cd到你想要安裝golang的目錄,確保該目錄下沒有名為go的目錄。然後以下命令擷取代碼倉庫:

git clone https://go.googlesource.com/go

大陸地區可能會擷取失敗,在不翻牆的情況下我試了幾次都沒成功,原因大家都懂的。好在google已經將golang也託管到github上面,所以也可以通過下面命令擷取:

git clone https://github.com/golang/go.git

視網路情況,下載可能需要不少時間。我2M的頻寬花了將近兩個小時才下載完,雖然整個項目不過幾十兆= =

下載完成後,可以看到目錄下多了一個go目錄,裡面即為golang的原始碼,在終端上執行cd go命令進入該目錄。

執行下面命令檢出go1.4.1版本的原始碼,因為現在已經有新的代碼提交上去了,最新的代碼可能不是最穩定的:

git checkout go1.4.1

至此,最新1.4.1發行版的原始碼擷取完畢


3、設定golang的編譯環境變數


主要有GOROOT、GOOS、GOARCH、GOARM四個環境變數需要設定,先解釋四個環境變數的意義。


3.1 GOROOT


主要代表golang樹結構目錄的路徑,也就是上面git檢出的go目錄。一般可以不用設定這個環境變數,因為編譯的時候預設會以go目錄下src子目錄中的all.bash指令碼運行時的父目錄作為GOROOT的值。為了保險起見,可以直接設定為go目錄的路徑。


3.2 GOOS和GOARCH


分別代表編譯的目標系統和平台,可選值如下:

GOOS GOARCH
darwin 386
darwin amd64
dragonfly 386
dragonfly amd64
freebsd 386
freebsd amd64
freebsd arm
linux 386
linux amd64
linux arm
netbsd 386
netbsd amd64
netbsd arm
openbsd 386
openbsd amd64
plan9 386
plan9 amd64
solaris amd64
windows 386
windows amd64
需要注意的是這兩個值代表的是目標系統和平台,而不是編譯原始碼的系統和平台。樹莓派的RaspBian是linux系統,所以這些GOOS設定為linux,GOARCH設定為arm。


3.3 GOARM

表示使用的浮點運算副處理器版本號碼,只對arm平台有用,可選值有5,6,7。如果是在目標平台上編譯原始碼,這個值可以不設定,它會自動判斷需要使用哪一個版本。

總結下來,在樹莓派上設定golang的編譯環境變數,可編輯$HOME/.bashrc檔案,在末尾添加下面內容:

export GOROOT=你的go目錄路徑export GOOS=linuxexport GOARCH=arm

編輯完後儲存,執行source ~/.bashrc命令讓修改生效。


4、編譯原始碼


環境變數配置完成自後就可以開始編譯原始碼。在go目錄下的src子目錄中,主要有all.bash和make.bash兩個指令碼(另外還有兩個all.bat和make.bat指令碼適用於window平台)。編譯實際上就是執行其中一個指令碼,兩者的區別在於all.bash在編譯完成後還會執行一些測試套件。如果希望只編譯不測試,可以運行make.bash指令碼。使用cd命令進入go下src目錄,執行./all.bash或者./make.bash命令即可開始編譯。由於硬體情況不同,編譯耗費的時間不同。在我的B型樹莓派編譯過程花費了將近半個小時,編譯完成後執行的測試套件又花費了差不多一個小時,總共花費了一個半小時左右。


5、配置golang運行環境變數


編譯完成後,go目錄下會產生bin目錄,裡面就是go的運行指令碼。為了以後使用方法,可以將這個bin路徑添加到PATH環境變數中。同樣編輯~/.bashrc檔案,因為前面設定過GOROOT環境變數指向go目錄了,所以只需要在末尾加上

export PATH=$PATH:$GOROOT/bin

儲存後同樣執行source ~/.bashrc命令讓環境變數生效。


至此,golang原始碼編譯安裝成功。執行go version應該就能看到當前golang的版本資訊,表示編譯安裝成功。

另外還有一個比較重要的GOPATH環境變數需要設定,等有時間再講講吧。


參考官方文檔:https://golang.org/doc/install/source



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.