在ubuntu上搭建go编程环境(附带自动化部署脚本)

自2009年Go语言发布以来,我一直在关注Go语言,如今Go语言已经发展到1.2版本,而且也收到越来越多的人关注这门语言。Go语言设计的目的就是为了解决执行数度快但是编译数度并不理想(如C++)以及编译速度快但执行效率不佳(.NET、Java),或者开发难度低但执行速度一般的动态语言这一问题。所以说,Go语言的特点是:快速编译,高效执行,易于开发。

好了,跳过那些框框条条的craps, 让我们直接先从Go语言的环境搭建开始,由于最近偏爱Ubuntu,在加上作为一门开源语言,在Linux上从源代码开始搭建环境更让人觉得有趣味性。

当然,如果你需要快速的搭建环境,也可以直接参考官方文档:http://golang.org/doc/install.html。考虑到官方文档已经十分详细,这里我就不再一一阐述了。

1. 设置Go环境变量

打开终端,输入命令:

export GOROOT=$HOME/go
export PATH=$GOROOT/bin:$PATH

当然,你需要设置项目的目录

export GOPATH=$HOME/Applications/Go

2. 安装C工具

由于Go的工具链是用C语言编写的, 因此在安装Go之前序言安装相关的C工具。执行一下命令:

sudo apt-get install bison ed gawk gcc libc6-dev make

3. 安装Mercurial

由于Go的源码是通过Mercurial进行管理的, 所以需要先安装Mercurial来实现Go源码的获取,一次执行一下命令:

sudo apt-get install python-setuptools
sudo apt-get install pythone-dev
sudo apt-get install build-essential
sudo apt-get install mercurial

4. 获取Go源代码

hg clone -r release https://go.googlecode.com/hg/ $GOROOT

5. 构建Go

在终端中执行一下命令来构建Go

cd $GOROOT/src

./all.bash

编译完成后会自动测试,但是在测试net/http时会链接google.com, 在国内环境稍微有一点不稳定(第一次编译成功挂掉了...),所以建议是增加一条环境变量

export DISABLE_NET_TESTS=1 

来跳过net的测试.

总结:以上步骤可以通过运行以下脚本来执行:

#!/bin/bash            
#set env
if [ "`grep "export GOROOT=/usr/local/go" /etc/profile`" = "" ]; then
    echo "export GOROOT=/usr/local/go" >> /etc/profile
fi
 
if [ "`grep "export PATH=$GOROOT/BIN:$PATH" /etc/profile`" = "" ]; then
    echo "export PATH=$GOROOT/bin:$PATH" >> /etc/profile
fi
#install c
sudo apt-get install -y bison ed gawk gcc libc6-dev make
 
#install mercuial
sudo apt-get install -y python-setuptools python-dev build-essential mercuial
 
#get code of go
hg clone  -r release https://go.googlecode.com/hg/ $GOROOT
 
#compile go
cd $GOROOT/src
./all.bash
exit 0

6. 测试安装

完成安装后,新建一个文档来测试环境是否搭建成功:

Example helloWorld.go

复制代码
 1 package main
 2 
 3 import (
 4     "fmt"
 5     "runtime"
 6 )
 7 
 8 func main() {
 9     fmt.Println("Hellow World!", runtime.Version())
10 }
复制代码

执行go run helloWorld.go, 应该会打印出:

Hellow World! go1.2

本文来自:CSDN博客

感谢作者:trochiluses

查看原文:在ubuntu上搭建go编程环境(附带自动化部署脚本)

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。