文档章节

让golang在Raspberry Pi上飞一会

quanpower
 quanpower
发布于 2014/01/09 00:32
字数 966
阅读 1235
收藏 3

最近在玩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”

本文转载自:http://www.lixin.me/blog/2013/02/12/29680

quanpower
粉丝 65
博文 166
码字总数 104911
作品 0
嘉定
CTO(技术副总裁)
私信 提问
Raspberry Pi 安装 Go 语言

Raspberry Pi 安装 Go 语言 首先从 Go 语言官网(https://golang.org/dl/)下载 Go 语言的 ARM64 构建: 或者对于 然后解压包: 接着,添加到环境变量中,默认是 也可以使用下面的命令来添加...

openthings
2018/01/15
267
0
GuiLite 2.0 发布:Golang 的 GUI 外衣

简介 Golang作为新生的高级语言,因为其独特的优势,迅速获得了开发者的支持,作者本身也对Golang简洁,优美的语言特性,分外喜欢。 不过遗憾的是:没有很多GUI与之搭配使用。为了响应广大开...

idea4good
03/14
6.8K
7
支持中文的智能音箱--XueBao

支持中文的智能音箱,能够听懂你的命令,通过语音控制一切。 原始代码复制自 http://jasperproject.github.io/ branch:jasper-dev,并做了很多修改,具体有: 原先的 Jasper 只支持最老版本...

匿名
2016/07/19
1K
0
Gor 2.5 发布了,极速博客引擎

gor 是使用 golang 实现的类Ruhoh静态博客引擎(Ruhoh like),基本兼容ruhoh 1.x规范. 相当于与ruhoh的官方实现(ruby实现), 有以下优点: 速度完胜 -- 编译wendal.net近200篇博客,仅需要1秒 安装...

wendal
2013/03/26
1K
7
让Mono 4在Raspberry Pi上飞

最近公司有项目想要在树莓派上做,代替原来的工控机(我们是把工控主机当作小的主机用,一台小的工控主机最少也要600左右,而树莓派只要200多)。于是,公司买了一个Raspberry Pi B+和一个R...

独行族妖侠
2015/06/02
640
1

没有更多内容

加载失败,请刷新页面

加载更多

64.监控平台介绍 安装zabbix 忘记admin密码

19.1 Linux监控平台介绍 19.2 zabbix监控介绍 19.3/19.4/19.6 安装zabbix 19.5 忘记Admin密码如何做 19.1 Linux监控平台介绍: 常见开源监控软件 ~1.cacti、nagios、zabbix、smokeping、ope...

oschina130111
今天
23
0
当餐饮遇上大数据,嗯真香!

之前去开了一场会,主题是「餐饮领袖新零售峰会」。认真听完了餐饮前辈和新秀们的分享,觉得获益匪浅,把脑子里的核心纪要整理了一下,今天和大家做一个简单的分享,欢迎感兴趣的小伙伴一起交...

数澜科技
今天
15
0
DNS-over-HTTPS 的下一代是 DNS ON BLOCKCHAIN

本文作者:PETER LAI ,是 Diode 的区块链工程师。在进入软件开发领域之前,他主要是在做工商管理相关工作。Peter Lai 也是一位活跃的开源贡献者。目前,他正在与 Diode 团队一起开发基于区块...

红薯
今天
26
0
CC攻击带来的危害我们该如何防御?

随着网络的发展带给我们很多的便利,但是同时也带给我们一些网站安全问题,网络攻击就是常见的网站安全问题。其中作为站长最常见的就是CC攻击,CC攻击是网络攻击方式的一种,是一种比较常见的...

云漫网络Ruan
今天
22
0
实验分析性专业硕士提纲撰写要点

为什么您需要研究论文的提纲? 首先当您进行研究时,您需要聚集许多信息和想法,研究论文提纲可以较好地组织你的想法, 了解您研究资料的流畅度和程度。确保你写作时不会错过任何重要资料以此...

论文辅导员
今天
26
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部