讓golang在Raspberry Pi上飛一會

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

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

Golang的文檔上說是支援多平台的,其中也包括了ARM,看來有戲了,興沖沖開啟http://code.google.com/p/go/downloads/list (golang編譯器的下載頁面) ,卻發現沒有arm平台的二進位大包下載。所以arm平台下的需要下載源碼自己編譯。

 

Raspberry上編譯前準備及配置

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

二。確認需要的工具系統已經具備了:mercurial 、gcc 和 libc6-dev 。如果不確定有沒有只需輸入下列命令:

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

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

三。配置環境變數。因為第一點的時候我把下載下來的源碼解壓到/home/pi/go 目錄下了,所以將GOROOT變數值設定為該路徑:

export GOROOT=/home/pi/go

export GOARCH=arm

但其實不設定的話也是可以的,它預設是等一下命令列執行位置的父目錄。

四。也是配置環境變數。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”

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.