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。

安装

二进制安装

  1. 官网下载二进制包如*go1.6.linux-amd64.tar.gz*
  2. 解压到/usr/local目录:
    $ tar -C /usr/local -xzf go$VERSION.$GOOS-$GOARCH.tar.gz
    
  3. 将/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 [email protected]: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源码

  1. 设置git代理:

    $ git config http.proxy http://user:[email protected]:port
    $ git config https.proxy https://user:[email protected]:port
    
  2. 设置go get代理
    $ export http_proxy=http://user:[email protected]:port
    
  3. 获取源代码:

    直接下载或者从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 #需FQ
      $ git clone https://github.com/golang/go.git
      $ cd go
      $ git checkout go1.6 #也可以切换到其它分支如master
    
  1. 编译源代码

    $ 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中,即可使用。

  2. 移动 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
    
  3. 安装额外的工具如godocvetcover(二进制发布版中包含这些工具,无需额外安装):

    一些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  yacc
    

    go 命令会将godoc安装到$GOROOT/bin或者$GOBIN,其它的go toolcovervet安装到$GOROOT/pkg/tool/$GOOS_$GOARCH。可以用go tool covergo tool vet命令来调用后面目录中的程序。

工具链测试

  1. 创建和设置GOPATH(非必须):

    $ mkdir -p $HOME/go/{src,bin,pkg}
    $ export GOPATH=$HOME/go
    $ mkdir $HOME/go/src/demo
    $ cd !$
    
  2. 编写一个测试文件如 hello.go
    package main
    
    import "fmt"
    
    func main() {
      fmt.Printf("hello, world\n")
    }
    
  3. 编译并执行, -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

参考

    1. Getting Started
    2. Installing Go from source
时间: 2024-10-12 16:48:49

Go语言环境安装详细介绍的相关文章

Cloudera Manager (centos)安装详细介绍

文章全部来自:Cloudera Manager (centos)安装详细介绍http://www.aboutyun.com/thread-9190-1-1.html(出处: about云开发) 这里已经有很多关于CDH的文章,此篇虽然不是把所有的问题都描述了.但是整体的过程还算描述的比较清楚.问题导读: 1.安装需要做哪些准备? 2.如何安装CM? 3.如何通过CM安装CDH? 4.CM及CDH安装的过程都包含什么? 相信通过这篇文章大家都对Cloudera Manager及CDH安装有一个整体

【Go】 Go 语言环境安装

安装环境/工具 1.Linux(CentOS 7.4版) 2.go1.11.2.linux-amd64.tar Go 语言环境安装 1.下载安装包 安装包下载地址为:https://golang.org/dl/. 如果打不开可以使用这个地址:https://golang.google.cn/dl/. 2.将下载的安装包解压至 安装目录(/data/soft). 命令:tar -xvf go1.11.2.linux-amd64.tar -C /data/soft/ 3.将 /data/soft/g

Go 语言环境安装

本人qq群也有许多的技术文档,希望可以为你提供一些帮助(非技术的勿加). QQ群:   281442983 (点击链接加入群:http://jq.qq.com/?_wv=1027&k=29LoD19)  Go 语言支持以下系统: Linux FreeBSD Mac OS X(也称为 Darwin) Window 安装包下载地址为:https://golang.org/dl/. 各个系统对应的包名: 操作系统 包名 Windows go1.4.windows-amd64.msi Linux go1

【Mongodb】 Sharding Replica Sets 分片集群生产环境安装与介绍!

系统环境:Centos 6.5 官网手册:http://docs.mongodb.org/manual/ 参阅资料:<Mongodb权威指南><Mongodb实战><深入学习Mongodb> 由上方的官方拓扑可以看出,Sharding集群成员由Shard.ConfigServer.Router组成 Shard:可以是一个实例,官方推荐生产环境使用副本集Replica Set Config Server:为三台主机,当有1台或者2台Server当机,对于用户而言,集群还是

Hadoop2.X版本伪分布式安装详细介绍【非抄袭,原创!】

网上hadoop单节点安装文章真是一搜一大堆,可以这样说,全是垃圾,那些博主也不知道自己安装过没有..反正就一堆的copy,我实在看不下去了.必须把我总结的写出来,如果你有任何问题随时联系我! E-Mail: [email protected] 下面我以2.2.0为例子!注意这是单节点!!伪分布式!!不喜勿看 Hadoop2.2.0(Yarn)安装详细过程 一.运行一个单机版模式的hadoop伪分布式平台 1.软件环境 1.操作系统: 由于linux的开源性.安全性等因素现有的hadoop集群多

R语言环境安装与基本使用

R语言安装包可以从这个地址选择合适的URL去下载:https://cran.r-project.org/mirrors.html,这里使用这个https://mirrors.tuna.tsinghua.edu.cn/CRAN/,如下: 下载对应平台的安装包即可,这里我下载Mac OS X的,目前版本是3.3.2. 注意: 在下载文件描述可以看到,需要X11环境的支持,不过安装包已经包含这些必须的包在里面了! 安装完后,可以在应用程序看到图标"R": 点击打开后界面如下: 当然,也有图形

P4语言环境安装(一)前端编译器p4c、后端编译器p4c-bm2-ss

这个P4安装环境是在2020-2-8安装的,安装环境卡了我好几天,把遇到的问题记录下来,有需要的同学可以参考一下,要是说错了或者有问题的话,评论或mail:[email protected]联系我都可以. P4语言组织官网:https://p4.org/ 本文安装代码就是从官网引导的p4language上下载的. 介绍 我看P4是刚看了三四十小时,大都用在安装环境了,觉得它就是一个控制修改数据流的语言,提供一个标准的结构,方便用户对控制平面和数据平面进行修改. 我理解的P4开发流程就是四步 程序

go语言学习之旅--Go 语言环境安装

前言 笔者已经自学python大概已经几个月了,但是工作繁忙,而且工作中未用到python的知识.于是就渐渐生疏了,这是下定决心学习go,是因为公司有一台go编写的报表系统,而且公司逐渐在想docker转,学习go更又助于未来的工作. 关于GO Go 是一个开源的编程语言,它能让构造简单.可靠且高效的软件变得容易. Go是从2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持开发,后来还加入了Ian Lance Taylor, Russ Cox等人,

Yeoman 的安装详细介绍

先去nodejs官网下载NodeJs 双击进行安装,这个不用多说. 安装完成后,可以找到 安装后以上 node 和 npm就有了,运行一下命令查看版本 出现如下结果,说明安装的没有问题 安装Yeoman 工具包 我的这里还需要自己安装bower 和grunt 不知道其他人是不是这样.(我参考的教程里说是都好了) 安装 bower 同理 grunt的安装 最后来检查一下是否安装成功 运行 结果为 未完待续 参考http://blog.sina.com.cn/s/blog_761dcfc60101d