Go语言环境安装详细介绍
工具链介绍
go有两套编译工具链,分别是从plant9移植过来的gc和依赖gcc的gccgo。
官方为gc工具链提供了二进制安装包和源码, 可以根据需要选择一种安装方式。gc工具链对操作系统和CPU类型的支持情况如下:
操作系统 | CPU类型 | 备注 |
---|---|---|
FreeBSD 8 or later | amd64, 386, arm | Debian GNU/kFreeBSD not supported; FreeBSD/ARM needs FreeBSD 10 or later |
Linux 2.6.23 or later with glibc | amd64, 386, arm | CentOS/RHEL 5.x not supported; no binary distribution for ARM yet |
Mac OS X 10.6 or later | amd64, 386 | use the gcc** that comes with Xcode** |
Windows XP or later | amd64, 386 | use MinGW gcc. No need for cygwin or msys. |
对于其它操作系统或CPU类型,需要从源码编译gc工具链或使用gccgo。
- 如果使用cgo,则需要安装gcc;
- Xcode command tool是Xcode的一部分,它包含gcc编译器, 可以从Xcode的Componts->Downloads对话框中下载该tool。
安装
二进制安装
- 从官网下载二进制包如*go1.6.linux-amd64.tar.gz*
解压到
/usr/local
目录:$ tar -C /usr/local -xzf go$VERSION.$GOOS-$GOARCH.tar.gz
将/usr/local/go/bin添加到PATH中:
$ export PATH=$PATH:/usr/local/go/bin
go默认假设被安装到/usr/loca/go,如果被安装到其它位置,则需要设置GOROOT环境变量。例如,二进制包被解压到$HOME目录,则设置如下:
$ export GOROOT=$HOME/go
$ export PATH=$PATH:$GOROOT/bin
注意:只有当将go安装到非/usr/local目录时才需要设置GOROOT变量。
从源码编译安装
安装Go编译器二进制文件
1.4版本后的Go工具链是用go语言写的,如果要构建它,系统需要安装Go编译器:
如果系统已经有>= 1.4版本的go工具链,则将
GOROOT_BOOTSTRAP
变量设置为所在目录;$ unset GOROOT GOPATH #如果系统已经有go工具链,需要清除`$GOPATH`和`$GOROOT`变量;
$ export GOROOT_BOOTSTRAP=$HOME/local/go否则,需要下载1.4版本的go工具链,该版本是C写的,只依赖gcc和glibc;可以下载二进制或编译并安装源码,然后将
GOROOT_BOOTSTRAP
变量设置为所在目录;$ cd /tmp
$ git clone git@github.com:golang/go.git
$ cd go
$ git checkout -b 1.4.3 go1.4.3
$ cd src
$ ./all.bash #编译go 1.4.3
$ export GOROOT_BOOTSTRAP=/tmp/go/go #GOROOT\_BOOTSTRAP缺省值为`$HOME/go1.4`,如果安装到其它位置,则需要重新定义;
使用GOROOT_BOOTSTRAP变量指定Go工具链位置(如果位于$HOME/go1.4,则无需指定)后,可以执行源码中的bootstrap.bash
脚本,生成支持$GOOS
、$GOARCH
指定的目标操作系统和架构的新工具链:
$ GOOS=linux GOARCH=ppc64 ./bootstrap.bash
该命令生成的工具链位于../../go-${GOOS}-${GOARCH}-bootstrap.
目录,可以设置为变量GOROOT_BOOTSTRAP
的值,用于后续编译源码;
编译最新的go源码
设置git代理:
$ git config http.proxy http://user:passwd@host:port
$ git config https.proxy https://user:passwd@host:port设置go get代理
$ export http_proxy=http://user:passwd@host:port
获取源代码:
直接下载或者从git仓库clone。
从官网下载
$ wget https://golang.org/dl/go$VERSION.src.tar.gz
$ tar -xzvf go$VERSION.$OS-$ARCH.tar.gz
从git代码库clone:
$ git clone https://go.googlesource.com/go #需翻墙
$ git clone https://github.com/golang/go.git
$ cd go
$ git checkout go1.6 #也可以切换到其它分支如master
编译源代码
$ pwd
/tmp/
$ cd go/src
$ ./all.bash #使用`GOROOT_BOOTSTRAP`指定的go 1.4版本以上的工具链来编译go源码
...
ALL TESTS PASSED ---
Installed Go for linux/amd64 in /tmp/go
Installed commands in /tmp/go/bin
*** You need to add /tmp/go/bin to your PATH.go 会将安装位置记录到二进制的
GOROOT
变量中,如果需要调整安装目录,可以设置$GOROOT_FINAL=/path/to/goTree
, 这样编译完后会提示将/tmp/go
移动到/path/to/goTree
目录(这个参数只能在编译阶段有效,如果在编译后移动Go tree则参考步骤5)。$ ls /tmp/go -F
api/ AUTHORS bin/ CONTRIBUTORS doc/ favicon.ico include/ lib/
LICENSE misc/ PATENTS pkg/ README robots.txt src/ test/ VERSION $ ls /tmp/go/bin #源码包自带的二进制工具命令, 没有 godoc
go gofmt $ ls /tmp/go/pkg/tool/linux_amd64/
addr2line asm cgo compile dist doc fix link nm objdump pack pprof tour yacc $ /tmp/go/bin/go env |grep -E 'GOROOT|GOTOOLDIR'
GOROOT="/tmp/go" #可见Go tree被安装到预期位置
GOTOOLDIR="/tmp/go/pkg/tool/linux_amd64"将
/tmp/go/bin
加入到PATH中,即可使用。移动 Go 源码目录
可以将编译过的Go Tree移动到其它目录,然后修改
GOROOT
环境变量即可。$ mkdir /tmp/xxx
$ export GOROOT=/tmp/xxx
$ mv * /tmp/xxx
$ /tmp/xxx/bin/go env |grep -E 'GOROOT|GOTOOLDIR'
GOROOT="/tmp/xxx" #Go tree和工具链自动调整
GOTOOLDIR="/tmp/xxx/pkg/tool/linux_amd64" #设置PATH和GOPATH
$ export PATH=/tmp/xxx/bin:$PATH
$ which go
/tmp/xxx/bin/go
$ go version
go version go1.4 linux/amd64安装额外的工具如
godoc
,vet
,cover
(二进制发布版中包含这些工具,无需额外安装):一些Go工具位于go.tools仓库中,需要额外安装。
$ #安装所有工具:
$ go get golang.org/x/tools/cmd/... #...是通配符,参考: go help packages $ go get golang.org/x/tools/cmd/godoc #只安装godoc工具
$ ls bin/ #多了godoc
go godoc gofmt
$ ls pkg/tool/linux_amd64/ #多了vet,cover
addr2line asm cgo compile cover dist doc fix link nm objdump pack pprof tour trace vet yaccgo 命令会将
godoc
安装到$GOROOT/bin
或者$GOBIN
,其它的go tool
如cover
、vet
安装到$GOROOT/pkg/tool/$GOOS_$GOARCH
。可以用go tool cover
或go tool vet
命令来调用后面目录中的程序。
工具链测试
创建和设置GOPATH(非必须):
$ mkdir -p $HOME/go/{src,bin,pkg}
$ export GOPATH=$HOME/go
$ mkdir $HOME/go/src/demo
$ cd !$编写一个测试文件如 hello.go
package main import "fmt" func main() {
fmt.Printf("hello, world\n")
}编译并执行, -x选项可以打印出编译过程
$ go build -x demo.go
WORK=/tmp/go-build333633893
mkdir -p $WORK/command-line-arguments/_obj/
mkdir -p $WORK/command-line-arguments/_obj/exe/
cd /home/ksyun/golang/src
/home/ksyun/local/go/pkg/tool/linux_amd64/compile -o $WORK/command-line-arguments.a -trimpath $WORK -p main -complete -buildid ed5feda32ea5b5ab51ac7fe9d1193005f6f99836 -D _/home/ksyun/golang/src -I $WORK -pack ./demo.go
cd .
/home/ksyun/local/go/pkg/tool/linux_amd64/link -o $WORK/command-line-arguments/_obj/exe/a.out -L $WORK -extld=gcc -buildmode=exe -buildid=ed5feda32ea5b5ab51ac7fe9d1193005f6f99836 $WORK/command-line-arguments.a
mv $WORK/command-line-arguments/_obj/exe/a.out demo
hello, world
环境变量(可选)
编译工具链可以使用以下环境变量进行配置;
$GOROOT
构建时,值为all.bash
脚本所在目录的父目录,会被写入到生成的二进制中;如果后续移动了安装目录,则使用该变量指定新的Go Tree顶层目录;$GOROOT_FINAL
一般和$GOROOT
一致,定义在构建后的安装阶段安装到的位置;$GOOS
和$GOARCH
交叉编译时,分别定义目标操作系统和体系结构,默认和$GOHOSTOS
和$GOHOSTARCH
一致。各组合如下:$GOOS $GOARCH
android arm
darwin 386
darwin amd64
darwin arm
darwin arm64
dragonfly amd64
freebsd 386
freebsd amd64
freebsd arm
linux 386
linux amd64
linux arm
linux arm64
linux ppc64
linux ppc64le
linux mips64
linux mips64le
netbsd 386
netbsd amd64
netbsd arm
openbsd 386
openbsd amd64
openbsd arm
plan9 386
plan9 amd64
solaris amd64
windows 386
windows amd64$ #交叉编译
$ GOOS=windows GOARCH=amd64 go build
$ file pssh.exe
pssh.exe: PE32+ executable for MS Windows (console) Mono/.Net assembly$GOHOSTOS
和$GOHOSTARCH
编译工具链所在主机的操作系统和架构类型,必须与所在操作系统和CPU架构类型兼容;$GOBIN
如果设置,则所有的Go二进制程序将安装到此目录,而不是默认的$GOPATH/bin
参考
Go语言环境安装详细介绍的更多相关文章
- Cloudera Manager (centos)安装详细介绍
文章全部来自:Cloudera Manager (centos)安装详细介绍http://www.aboutyun.com/thread-9190-1-1.html(出处: about云开发) 这里已 ...
- 【保姆级教程】手把手教你进行Go语言环境安装及相关VSCode配置
[Go语言入门系列]前面的文章: [Go语言入门系列](七)如何使用Go的方法? [Go语言入门系列](八)Go语言是不是面向对象语言? [Go语言入门系列](九)写这些就是为了搞懂怎么用接口 本篇文 ...
- 【Go】 Go 语言环境安装
安装环境/工具 1.Linux(CentOS 7.4版) 2.go1.11.2.linux-amd64.tar Go 语言环境安装 1.下载安装包 安装包下载地址为:https://golang.or ...
- Go 语言环境安装
Go 语言支持以下系统: Linux FreeBSD Mac OS X(也称为 Darwin) Window 安装包下载地址为:https://golang.org/dl/. 各个系统对应的包名: 操 ...
- Jmeter环境搭建详细介绍
[前言] 欢迎来到我的博客,知识在于分享,如有不足之处,希望指出,大家共同进步学习! [JDK检查和安装] 现在市面上比较普遍的性能测试工具无非就LoadRunner和Jmeter,本人一直秉持着便宜 ...
- appium整个环境安装详细教程(重要)
环境依赖 Node.js Appium Appium-desktop Appium-doctor Appium-Python-Client Python JDK Andriod SDK 以上所需的软件 ...
- P4语言环境安装(一)前端编译器p4c、后端编译器p4c-bm2-ss
这个P4安装环境是在2020-2-8安装的,安装环境卡了我好几天,把遇到的问题记录下来,有需要的同学可以参考一下,要是说错了或者有问题的话,评论或mail:guidoahead@163.com联系我都 ...
- go语言环境安装
Go 是一个开源的编程语言,被设计成一门应用于搭载 Web 服务器,存储集群或类似用途的巨型中央服务器的系统编程语言. 1. 准备环境并安装依赖包 创建centos 7.6 64bit的虚拟机. 安装 ...
- Go语言环境安装-Mac
1.环境安装 Go SDK下载和安装,下载地址为:https://golang.org/dl/ Visual Studio Code下载和安装,下载地址为:https://code.visualstu ...
随机推荐
- JavaScript权威指南--正则表达式
知识要点 正则表达式,是一个描述字符模式的对象.javascript的RegExp类表示正则表达式,String和RegExp都定义了方法,后者使用正则表达式进行强大的模式匹配和文本检索与替换功能. ...
- Java IO流-NIO简介
2017-11-05 22:09:04 NIO NIO:new IO就是新IO的意思,JDK4开始出现新IO,新IO和传统的IO有相同的目的,都是用于进行输入输出的,但是新IO使用了不同的方式来处理输 ...
- The web application you are attempting to access on this web server is currently unavailable.......
今天去服务器安装了个.net 4.0 framework(原本有1.0和2.0的),配置好站点后,选择版本为4.0,访问出错,错误代码如下 Server Application Unavailable ...
- Custom Ribbon in SharePoint 2010 & which not wrok when migrate from 2010 to 2013
博客地址 http://blog.csdn.net/foxdave 1. First of all, let me show you the ribbon modal in our project w ...
- New Concept English Two 28 76
$课文74 舞台之外 784. An ancient bus stopped by a dry river bed and a party of famous actors and actresse ...
- resin WED服务器初用遇到的问题和解决方法 java.lang.RuntimeException: java.net.SocketException: Unrecognized Windows Socke ts error: 0: JVM_Bind
开启resin 服务器以后提示如下:(控制台不断的循环循环打印如下错误提示) java.lang.RuntimeException: java.net.SocketException: Unrecog ...
- ES6中箭头函数的作用
我们知道在ES6中,引入了箭头函数,其本质就是等同有ES5中的函数.类似于下面的写法: let test1=() => “abc”; let test2=() => { return “a ...
- .NET/C# 判断某个类是否是泛型类型或泛型接口的子类型
.NET 中提供了很多判断某个类型或实例是某个类的子类或某个接口的实现类的方法,然而这事情一旦牵扯到泛型就没那么省心了. 本文将提供判断泛型接口实现或泛型类型子类的方法. 本文内容 .NET 中没有自 ...
- Python + Djang+ Visual Studio Code(VSCode)
使用 Visual Studio Code(VSCode)搭建简单的 Python + Django 开发环境 https://www.cnblogs.com/Dy1an/p/10130518.htm ...
- php浮点数比较
本文实例讲述了PHP中两个float(浮点数)比较方法.分享给大家供大家参考.具体如下: 最近在开发一个合同管理系统的时候,涉及到两个浮点数比较,算是把我郁闷惨了.在N久以前,就不晓得从哪里听来的一个 ...