讓golang在Raspberry Pi上飛一會

最近在玩2樣東西,同樣是go語言(golang),同樣是Raspberry Pi(樹莓派)。那麼能在Raspberry上運行go語言程序嗎? golang

Golang的文檔上說是支持多平臺的,其中也包括了ARM,看來有戲了,興沖沖打開http://code.google.com/p/go/downloads/list (golang編譯器的下載頁面) ,卻發現沒有arm平臺的二進制大包下載。因此arm平臺下的須要下載源碼本身編譯。 ubuntu

 

Raspberry上編譯前準備及配置

一。俗話說巧婦難爲無米之炊,要編譯源碼先得下源碼,下載後這裏解壓到 /home/pi/go 目錄下。 vim

二。確認須要的工具系統已經具有了:mercurial 、gcc 和 libc6-dev 。若是不肯定有沒有隻需輸入下列命令: 瀏覽器

sudo apt-get install -y mercurial gcc libc6-dev bash

以上命令實現安裝3個必需的工具。 工具

三。配置環境變量。由於第一點的時候我把下載下來的源碼解壓到/home/pi/go 目錄下了,因此將GOROOT變量值設置爲該路徑: 學習

export GOROOT=/home/pi/go 測試

export GOARCH=arm ui

但其實不設置的話也是能夠的,它默認是等一下命令行執行位置的父目錄。 google

四。也是配置環境變量。GOARM 變量能夠不設置,默認值爲:「6″。可是實際中證實,若是不設置爲值爲「5″的話,編譯會出現以下的錯誤:SIGILL: illegal instruction 。那麼設置爲5和6有什麼區別呢?將 GOARM 設置爲5會引發鏈接器發出指令來調用軟件浮點數實現,而非使用硬件浮點數支持。

export GOARM=」5″

五。分配更多的內存給cpu使用。這不是必須的,更大的內存有助於縮減編譯時間。使用:sudo raspi-config 中的memory_split功能來實現。

Raspberry上編譯golang

打開命令行,進入go目錄下的src目錄:

cd /home/pi/go/src

運行all.bash腳本

./all.bash

或者你想看看整個編譯耗時多少的話能夠這樣:

time ./all.bash 

好了。通過漫長的時間後:

pi@raspberrypi ~/go/src $ time ./all.bash

real 47m34.894s
user 44m23.260s
sys 2m6.690s

整個過程消耗了47分鐘。編譯完成了。而在個人電腦上這個過程只須要3分鐘。

小結

以上過程只是在Rapsberry上編譯golang的編譯器,若是咱們只想在Raspberry上運行go語言編寫的程序,那大可不用這樣子,咱們可使用交叉編譯在本身的電腦上完成代碼的編譯後copy到Raspberry上運行即可了。

如何上golang官網

最近發現go語言的官網已經沒法訪問了,這給學習帶來不少不便。這裏提供一個比較簡單的方法。

一。輸入命令:nslookup www.google.com 8.8.8.8

獲得google的ip地址列表若干,而後隨機複製一個ip,在瀏覽器上輸入,看看可否打開google的搜索頁面。若是能,則繼續第二步。

二。打開系統hosts文件,ubuntu12下默認爲/etc/hosts 。加入一行:

<第一步獲得的ip地址> golang.org

例如:74.125.128.102 golang.org

好了,看看能夠打開官網了嗎!

 

在ubuntun上編譯go程序在Raspberry上運行

其實就是交叉編譯。將golang源碼解壓到/home/lixin/soft/goarm5目錄下。

命令行進入到/home/lixin/soft/goarm5/src 。

運行以下命令:

export GOROOT=/home/lixin/soft/goarm5

export GOARCH=arm

export GOARM=5

./all.bash

大概幾分鐘後,就建好了適合Raspberry上運行的編譯器了。

接着來些個hello world測試程序。

vim /home/lixin/main.go

main.go文件內容以下:

package main
import 「fmt」
func main(){
fmt.Println(「hello lixin」)
}

交叉編譯:

/home/lixin/soft/goarm5/bin/go build ./main.go

將生成的main文件拷貝到Raspberry上運行。很是好,正確的在屏幕中打印出「hello lixin」

相關文章
相關標籤/搜索