Black Lives Matter. Support the Equal Justice Initiative.

Installing Go from source

Introduction

Go是一个开源项目,以BSD样式的许可证分发 . 本文档说明了如何检出源代码,如何在您自己的计算机上构建源代码以及如何运行它们.

大多数用户不需要执行此操作,而是按照更简单的入门指南中所述从预编译的二进制程序包进行安装. 但是,如果您想帮助开发这些预编译软件包中包含的内容,请继续阅读.

有两个官方的Go编译器工具链. 本文档重点介绍gc Go编译器和工具. 有关如何在gccgo (使用GCC后端的更传统的编译器)上工作的信息,请参阅" 设置和使用gccgo" .

Go编译器支持十二个指令集:

amd64, 386
x86指令集(64位和32位).
arm64, arm
ARM指令集(64位( AArch64 )和32位).
ppc64, ppc64le
64位PowerPC指令集,大端和小端.
s390x
IBM z / Architecture.
mips64, mips64le, mips, mipsle
MIPS指令集,大端和小端,64位和32位.
wasm
WebAssembly.

编译器可以针对AIX,Android,DragonFly BSD,FreeBSD,Illumos,Linux,macOS / iOS(Darwin),NetBSD,OpenBSD,Plan 9,Solaris和Windows操作系统(尽管并非所有操作系统都支持所有体系结构).

头等端口维基页面上可以找到被认为是"头等"端口的列表.

下面的环境变量讨论中列出了支持的全套组合.

有关整体系统要求,请参见主安装页面. 以下附加约束适用于只能从源构建的系统:

  • 对于64位PowerPC上的Linux,支持的最低内核版本是2.6.37,这意味着Go在这些系统上不支持CentOS 6.

Install Go compiler binaries

Go工具链是用Go编写的. 要构建它,您需要安装Go编译器. 进行工具初始构建的脚本在$GOROOT_BOOTSTRAP查找现有的Go工具链. 如果未设置,则GOROOT_BOOTSTRAP的默认值为$HOME/go1.4 .

引导工具链有很多选项. 获得一个树后,将GOROOT_BOOTSTRAP设置到包含解压缩树的目录. 例如, $GOROOT_BOOTSTRAP/bin/go应该是引导工具链的go命令二进制文件.

Bootstrap toolchain from binary release

要将二进制发行版用作引导工具链,请参见下载页面或使用任何其他打包的Go发行版.

Bootstrap toolchain from source

要从源代码构建引导工具链,请使用git分支release-branch.go1.4go1.4-bootstrap-20171003.tar.gz ,其中包含Go 1.4源代码以及累积的修补程序,以使工具在较新的版本上运行操作系统. (Go 1.4是用C编写工具链的最后一个发行版.)解CGO_ENABLED=0 Go 1.4源代码后,将cd CGO_ENABLED=0 src子目录,在环境中设置CGO_ENABLED=0 ,然后运行make.bash (或者在Windows上,运行make.bat ).

将Go 1.4源码解压缩到GOROOT_BOOTSTRAP目录后,您必须将此git clone实例检出到分支release-branch.go1.4 . 具体来说,请勿在名为"获取存储库"的后续步骤中尝试重用此git克隆. go1.4引导程序工具链必须能够正确遍历它假定存在于此存储库根目录下的go1.4源.

Bootstrap toolchain from cross-compiled source

要从源代码交叉编译引导工具链,这在Go 1.4未定位的系统上是必需的(例如linux/ppc64le ),请在其他系统上安装Go并运行bootstrap.bash .

当运行为(例如)

$ GOOS=linux GOARCH=ppc64 ./bootstrap.bash

bootstrap.bash交叉编译该GOOS/GOARCH组合的工具链,将结果树保留在../../go-${GOOS}-${GOARCH}-bootstrap . 该树可以复制到给定目标类型的计算机上,并用作GOROOT_BOOTSTRAP来引导本地构建.

Bootstrap toolchain using gccgo

要将gccgo用作引导工具链,您需要安排$GOROOT_BOOTSTRAP/bin/go成为gccgo 5附带的go工具.例如,在Ubuntu Vivid上:

$ sudo apt-get install gccgo-5
$ sudo update-alternatives --set go /usr/bin/go-5
$ GOROOT_BOOTSTRAP=/usr ./make.bash

Install Git, if needed

要执行下一步,您必须安装Git. (继续之前,请检查您是否具有git命令.)

如果没有有效的Git安装,请按照Git下载页面上的说明进行操作.

(Optional) Install a C compiler

要构建具有cgo支持的Go安装,该安装允许Go程序导入C库,必须首先安装gccclang类的C编译器. 使用系统上标准的任何安装方法来执行此操作.

要在没有cgo情况下cgo构建,请在运行all.bashmake.bash之前设置环境变量CGO_ENABLED=0 .

Fetch the repository

转到您打算安装Go的目录,并确保goroot目录不存在. 然后克隆存储库并签出最新的发行版标记(例如go1.12 ):

$ git clone https://go.googlesource.com/go goroot
$ cd goroot
$ git checkout <tag>

其中<tag>是发行版的版本字符串.

Go将安装在检出目录中. 例如,如果在$HOME/goroot检出Go,则可执行文件将安装在$HOME/goroot/bin . 该目录可以有任何名称,但是请注意,如果在$HOME/go检出Go,它将与$GOPATH的默认位置发生冲突. 请参阅下面的GOPATH .

提醒:如果您还选择从源代码编译引导二进制文件(在前面的部分中),那么此时仍需要再次git clone (以检出最新的<tag> ),因为您必须保持go1.4存储库与众不同.

如果您打算修改go源代码并将更改贡献到项目中,则将存储库从release分支移至master(开发)分支. 否则,请跳过此步骤.

$ git checkout master

Install Go

要构建Go发行版,请运行

$ cd src
$ ./all.bash

(要在Windows下构建,请使用all.bat .)

如果一切顺利,它将通过打印输出来完成:

ALL TESTS PASSED

---
Installed Go for linux/amd64 in /home/you/go.
Installed commands in /home/you/go/bin.
*** You need to add /home/you/go/bin to your $PATH. ***

最后几行的详细信息反映了安装期间使用的操作系统,体系结构和根目录.

有关控制构建方式的更多信息,请参见下面有关环境变量的讨论. all.bash (或all.bat )为Go运行重要的测试,这比简单地构建Go需要更多的时间. 如果您不想运行测试套件,请使用make.bash (或make.bat )代替.

Testing your installation

通过构建一个简单程序来检查Go是否正确安装.

创建一个名为hello.go的文件,并将以下程序放入其中:

package main

import "fmt"

func main() {
	fmt.Printf("hello, world\n")
}

然后使用go工具运行它:

$ go run hello.go
hello, world

如果看到" hello,world"消息,则表明Go安装正确.

Set up your work environment

你几乎完成. 您只需要多做一些设置即可.

How to Write Go Code Learn how to set up and use the Go tools

" 如何编写Go代码"文档提供了使用Go工具的基本设置说明 .

Install additional tools

几个Go工具(包括godoc )的源代码保存在go.tools存储库中 . 要安装其中一种工具(本例中为godoc ):

$ go get golang.org/x/tools/cmd/godoc

要安装这些工具, go get命令要求在本地安装Git .

您还必须设置一个工作区( GOPATH ); 有关详细信息,请参见如何编写Go代码 .

Community resources

常用的社区资源,例如Freenode IRC服务器上的#go-nutsGo Nuts邮件列表,都有活跃的开发人员,可以帮助您解决安装或开发工作中的问题. 对于那些希望保持最新状态的人,还有另一个邮件列表golang-checkins ,它接收一条消息,总结对Go存储库的每个签入的信息.

可以使用Go问题跟踪器报告错误.

Keeping up with releases

新版本在golang-announce邮件列表中宣布 . 每个公告都提到最新的发行标签,例如go1.9 .

To update an existing tree to the latest release, you can run:

$ cd go/src
$ git fetch
$ git checkout <tag>
$ ./all.bash

其中<tag>是发行版的版本字符串.

Optional environment variables

Go编译环境可以通过环境变量进行定制. , but you may wish to set some to override the defaults. 设置,但您可能希望设置一些设置以覆盖默认设置.

Note that $GOARCH and $GOOS identify the target environment, not the environment you are running on. In effect, you are always cross-compiling. By architecture, we mean the kind of binaries that the target environment can run: an x86-64 system running a 32-bit-only operating system must set GOARCH to 386, not amd64.

如果选择覆盖默认值,请在外壳程序配置文件( $HOME/.bashrc$HOME/.profile或等效文件)中设置这些变量. 设置可能如下所示:

export GOARCH=amd64
export GOOS=linux

尽管重申一下,这些变量都不需设置即可构建,安装和开发Go树.

by  ICOPY.SITE