鉴于ubuntu上的apt-get方式安装的golang是1.2.1,版本过于老旧,最新版本的golang需要自己动手。最简单的方式是下载编译好的包,例如对于64位的ubuntu来说,下载go1.7.1.linux-amd64.tar.gz,解压到/usr/local,然后在bash中把 /usr/local/go/bin加入到PATH,整个过程就结束了。
如果想要用源码编译安装的话就会稍稍复杂一点,然而也并没有那么复杂,例如这篇 《Install Go1.6 from Source on CentOS 7 in China》(在中国网络环境下从源代码安装Go1.6到CentOS 7)就过于复杂,需要先把github上golang带版本控制信息的源码下载先来,切换到1.4.x的分支,编译1.4.x然后在切换到1.6(实际现在也可以切换到1.7),用go1.4.x编译go1.6或者更高版本。
这里想要介绍的,是更为简介的方案(文末附官方下载地址)。
源码编译步骤如下:
0.更新ubuntu
sudo apt-get update && sudo apt-get upgrate -y
如果进度卡在 flasgPlugin-installer,用ctrl+c结束,再执行一次即可。
1.下载并编译go1.4.x
下载go1.4.x的源码,解压到当前用户目录例如 /home/zhangsan,并命名为go1.4,进入到src目录(完整的路径为 /home/zhangsan/go/src),在shell中运行./all.bash,屏幕滚动编译信息,最后以
Installed Go for linux/amd64 in /zhangsan/you/go
Installed commands in /home/zhangsan/go/bin
的提示信息结束了编译过程。这个时候go1.4.x已经编译好了。
2.下载并编译go1.7
下载go1.7的源码,解压到当前用户目录,解压完后完整的路径为/home/zhangsan/go,如果考虑到其他账户使用的话,也可以解压到/usr/local,这样完整的路径就会是/usr/local/go。进入到 xx/go/src目录,在shell中运行./all.bash(如果是在/usr/local下则运行./all.bash并输入密码),你会在屏幕的滚动信息上看到go1.4.x在编译go1.7,最后的提示信息,如果在用户目录的go中编译,则会是:
Installed Go for linux/amd64 in /home/zhangsan/go
Installed commands in /home/zhangsan/go/bin
如果是/usr/local目录的go中编译,则会是:
Installed Go for linux/amd64 in /usr/local/you/go
Installed commands in /usr/local/go/bin
这个时候go1.7就已经编译完成了,go1.4.x可以删掉了。
3.设置环境变量
将xx/go/bin加入PATH。如果是在用户目录编译,在命令行运行
echo 'PATH=$PATH:/home/zhangsan/go/bin' >> ~/.bashrc
如果是在/usr/local目录的go中编译,在命令行运行
echo 'PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc
将工作代码路径设置为GOPATH。假设工作代码存放路径为 /home/zhangsan/workCode/src/hello/hello.go,/home/zhangsan/workCode/src/foobar/foobar.go 等,则设置GOPATH为 /home/zhangsan/workCode,在命令行运行
echo 'GOPATH=$HOME/workCode' >> ~/.bashrc
即可。至此go1.7已经安装配置完成,运行go version和go env看看能不能正确输出相关信息。
交叉编译
从go1.5开始,将源码编译成非本地系统的程序,不再需要先生成目的系统的编译工具了,直接加参数编译即可,例如在64位ubuntu上想要编译64位windows的程序,在源码路径下执行
GOOS=windows GOARCH=amd64 go build
就结束了(其中GOARCH=amd64可以省略)。当然如果是32位windows,则由于目的系统和本地系统架构不一致需要显示指明,命令变为
GOOS=windows GOARCH=386 go build