Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何在Ubuntu 16.04上从源代码安装Go

如何在Ubuntu 16.04上从源代码安装Go

原创
作者头像
独木桥先生
修改于 2018-07-25 09:59:06
修改于 2018-07-25 09:59:06
1.3K0
举报

介绍

Go是由Google开发的一种现代开源编程语言。它很简单,并且拥有一组强大的库和工具,可以轻松搭建可靠,高效的应用程序。

如果您想根据最新版本的语言测试Go应用程序,为Go代码库做贡献,或者有更好的Go版本管理,则需要从源代码搭建Go。本教程将向您展示如何搭建Go,涵盖一些实际考虑因素,以及搭建“Hello,World”测试应用程序。

准备

要学习本教程,您需要:

  • 一个Ubuntu 16.04服务器,已经设置好一个可以使用sudo命令的非root的账户,服务器的内存大于1G。
  • 已安装Git
  • (可选)GitHub帐户。

没有服务器的用户可以购买和使用腾讯云服务器或者直接在腾讯云实验室Ubuntu服务器上机安装Go 。

第1步 - 安装依赖项

在开始之前,更新一下本地的软件包。

代码语言:txt
AI代码解释
复制
$ sudo apt-get update

默认情况下,Ubuntu没有提供搭建Go所需的所有软件包,例如编译器,库和工具。通过安装build-essential、包括gcc用于编译C 的包、g++用于编译C ++和make自动化搭建工具,这样可以很容易地安装搭建和编译依赖项。

代码语言:txt
AI代码解释
复制
$ sudo apt-get install build-essential

安装完成后,您将拥有从源代码搭建Go所需的所有工具。接下来,您需要Go 1.4二进制文件。

第2步 - 安装Go 1.4.3

建立Go 1.5+要求你拥有Go 1.4。这是因为Go 1.5+的工具链是用Go本身编写的。您可以使用Go 1.4或任何点发布(1.4.1,1.4.2或1.4.3); 在本教程中,我们使用的是Go 1.4.3。

可以在Go的下载页面上找到带有SHA1校验和的二进制文件。将go1.4.3.linux-amd64.tar.gz文件下载到您的主目录。

代码语言:txt
AI代码解释
复制
$ cd ~
$ curl -O https://storage.googleapis.com/golang/go1.4.3.linux-amd64.tar.gz

虽然此文件是从正版源下载的,但验证已下载内容的完整性仍然是一种良好的安全措施。通过比较下载页面上提供的文件哈希和下载文件的哈希,可以轻松完成此操作。

首先,获取您下载的文件的哈希值。

代码语言:txt
AI代码解释
复制
$ sha1sum go1.4.3.linux-amd64.tar.gz

将此命令的输出与Go下载页面上提供的校验和进行比较。

代码语言:txt
AI代码解释
复制
332b64236d30a8805fc8dd8b3a269915b4c507fe  go1.4.3.linux-amd64.tar.gz

如果校验和匹配,则可以解压缩文件。

代码语言:txt
AI代码解释
复制
$ tar xvf go1.4.3.linux-amd64.tar.gz

x标志代表 eXtract ,v告诉tar使用Verbose输出(即列出提取文件),并f让我们指定Filename。

Go 1.4现在解压缩在一个名为go的目录中,但Go的搭建脚本查找Go 1.4二进制文件,是在~/go1.4文件中查找。我们使用该mv命令重命名目录。

代码语言:txt
AI代码解释
复制
$ mv go go1.4

现在,您拥有从源代码搭建Go的必要依赖项。如果要将Go 1.4从主目录移到另一个位置,可以继续下一步。不过不想移动,就可以直接到步骤4,获取Go Source。

第3步 - 重新定位Go 1.4.3(可选)

当Go搭建脚本运行时,它将根据名为GOROOT_BOOTSTRAP的环境变量查找Go 1.4 。如果未设置该变量(默认情况下),则搭建脚本将假定该go1.4目录位于主目录中。如果要将Go 1.4移动到其他位置,可以使用GOROOT_BOOTSTRAP变量。在这里,我们将其移至/usr/local/go1.4

首先,移动目录本身。

代码语言:txt
AI代码解释
复制
$ sudo mv go1.4 /usr/local

接下来,您需要通过修改~/.profile文件来设置环境中的路径。

代码语言:txt
AI代码解释
复制
$ sudo nano ~/.profile

〜/.profile文件末尾,添加以下行:

代码语言:txt
AI代码解释
复制
. . .
export GOROOT_BOOTSTRAP=/usr/local/go1.4

保存文件并退出。要使此更改生效,请刷新您的个人资料。

代码语言:txt
AI代码解释
复制
$ source ~/.profile

接下来,您将克隆Go源。

第4步 - 获取Go Sources

存储Go二进制文件的推荐位置是/usr/local。但是,您可以将它存储在您喜欢的任何地方。

进入/usr/local并使用Git克隆存储库。

代码语言:txt
AI代码解释
复制
$ cd /usr/local
$ sudo git clone https://go.googlesource.com/go

我们需要git clone使用root权限执行,因为/usr/local它由root拥有的。如果要克隆到用户具有写权限的目录,则可以在不使用sudo的情况下运行此命令。

注意:将Go存储在/usr/local以外的位置将需要您设置GOROOT环境变量。在步骤7中了解更多Go环境变量。

克隆成功完成后,将在/usr/local中创建一个go目录。接着进入该目录。

代码语言:txt
AI代码解释
复制
$ cd go

在搭建之前,我们需要选择我们想要的Go版本。

第5步 - 选择Go版本

Go源为每个可用版本提供不同的Git分支。分支机构的名称是:

  • master 用于开发中的最新版本
  • goversion 稳定版本

在这里,我们将使用Go 1.7.4,这意味着我们想要使用go1.7.4分支。

警告:不建议master在生产中使用Go 的开发版本(即分支)。它没有经过测试,可能存在错误。开发版本适用于应用程序测试,但仅使用已发布的版本进行生产。

要更改分支,请使用git checkout命令。您需要root权限才能执行这些命令,因为/usr/local/usr/local/go1.4root才有权限处理。

代码语言:txt
AI代码解释
复制
$ sudo git checkout go1.7.4

完成此步骤后,您已下载您喜欢的版本的Go源代码。您已准备好进入本教程的关键部分:搭建Go。

第6步 - 搭建Go

要搭建go,您需要执行src/all.bash,这是源代码附带的bash脚本。该脚本将检查您是否具有所有必需的依赖项,运行一些测试并完成搭建。

执行脚本,但请注意,如果更改了Go 1.4.3二进制文件的位置,则需要添加-E标志(即sudo -E bash ./all.bash)来保留环境变量。

代码语言:txt
AI代码解释
复制
$ cd src
$ sudo bash ./all.bash

脚本运行需要一点时间。搭建完成后,您将看到以下输出:

代码语言:txt
AI代码解释
复制
ALL TESTS PASSED

---
Installed Go for linux/amd64 in /usr/local/go
Installed commands in /usr/local/go/bin
*** You need to add /usr/local/go/bin to your PATH.

警告:在某些情况下,由于time测试失败,搭建可能会在Go 1.7上失败。这是一个由BUG导致的结果。

代码语言:txt
AI代码解释
复制
Failed test output--- FAIL: TestLoadFixed (0.00s)
    time_test.go:943: Now().In(loc).Zone() = "-01", -3600, want "GMT+1", -3600
FAIL
FAIL    time    2.403s
...
2016/12/09 22:16:40 Failed: exit status 1

这个BUG已在commit c5434f2中修复,因此将其添加到新创建的分支中。

代码语言:txt
AI代码解释
复制
$ cd ..
$ sudo git checkout -b go1.7.4-timefix 
$ sudo git cherry-pick c5434f2973a87acff76bac359236e690d632ce95

执行此操作后,您可以再次运行该脚本。(如果移动了Go 1.4.3二进制文件,请不要忘记-E标志。)

代码语言:txt
AI代码解释
复制
$ cd src
$ sudo bash ./all.bash

现在搭建了Go,您需要为它设置一些环境变量。

第7步 - 设置Go变量

环境变量是定制Go安装的有效方法。我们将介绍最重要和最有用的内容。

要开始使用Go,您需要将Go二进制路径/usr/local/go/bin添加到PATHGOPATH环境变量中。 GOPATH是存储Go应用程序代码和二进制文件的地方,我们将其指定为〜/ work,当然您可以自由地对其进行自定义。

将这些变量添加到~/.profile文件中。用您喜欢的文本编辑器打开它:

代码语言:txt
AI代码解释
复制
$ nano ~/.profile

〜/ .profile文件末尾添加以下行:

代码语言:txt
AI代码解释
复制
. . .
export GOPATH=$HOME/work
export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin

如果您在非默认路径中安装Go,,比如在/usr/local/go中,我们需要定义GOROOT变量。在这种情况下,还要添在〜/ .profile中添加:

代码语言:txt
AI代码解释
复制
export GOROOT=$HOME/go
export GOPATH=$HOME/work
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

保存文件并退出。要使这些更改生效,刷新了一下 profile

代码语言:txt
AI代码解释
复制
$ source ~/.profile

成功完成此步骤后,您将获得功能齐全的Go。接下来,我们将测试它以确保一切都按预期工作。

第8步 - 测试Go安装

一种常见的测试方法是编写并运行一个简单的“Hello,World”应用程序。

要做到这一点,首先我们将创建并移动到基于GOPATH的应用程序文件目录中。您可以在Go路径中选择任何您喜欢的内容,但是作为这里的示例,我们将设置如果使用GitHub管理代码所需的层次结构。即使没有GitHub帐户,这个层次结构也可以工作。

代码语言:txt
AI代码解释
复制
$ mkdir -p $GOPATH/src/github.com/your_github_username/test_project
$ cd $GOPATH/src/github.com/your_github_username/test_project

接下来,创建一个名为“Hello,World”的Go文件。

代码语言:txt
AI代码解释
复制
$ nano hello.go

将以下代码添加到hello.go文件中:

代码语言:txt
AI代码解释
复制
package main

import "fmt"

func main() {
    fmt.Printf("Hello World!\n")
}

此示例使用fmt包,它实现了Printf()之类的I/O函数,并定义了main()函数,该函数将在程序运行时打印Hello World

保存并退出文件,然后使用Go命令install进行编译。

代码语言:txt
AI代码解释
复制
$ go install github.com/your_github_username/test_project

编译完成后,可以使用以下命令运行它:

代码语言:txt
AI代码解释
复制
$ hello

你会看到Hello World!打印到终端,这意味着你的Go工作正常。

第9步 - 更改Go版本(可选)

本教程设置了Go 1.7.4。如果要使用其他版本,则需要更改活动的Git分支并重建Go。

要查看当前的Go版本,您可以使用go version

代码语言:txt
AI代码解释
复制
$ go version
代码语言:txt
AI代码解释
复制
go version go1.7.4 linux/amd64

举个例子,我们将切换到Go版本为1.6.4。此版本位于go1.6.4分支中,因此切换到它。

代码语言:txt
AI代码解释
复制
$ cd /usr/local/go
$ sudo git checkout go1.6.4

要确保所有内容都是最新的,请运行git pull以获取所选分支的最新更改。

代码语言:txt
AI代码解释
复制
$ sudo git pull origin go1.6.4

现在,像以前一样运行搭建脚本,确保在步骤3中重新定位Go 1.4时添加-E标志。

代码语言:txt
AI代码解释
复制
$ cd src
$ sudo bash ./all.bash

这需要一些时间才能完成。搭建完成后,您将看到以下输出:

代码语言:txt
AI代码解释
复制
ALL TESTS PASSED

---
Installed Go for linux/amd64 in /usr/local/go
Installed commands in /usr/local/go/bin
*** You need to add /usr/local/go/bin to your PATH.

您已经~/.profile从步骤5中设置了Go变量,因此您只需更改版本即可。

结论

通过从源代码搭建路径和设置路径,您现在拥有了开发和测试Go应用程序或为Go代码库做贡献的基础,同时腾讯云开发者手册提供Go的中文开发文档,欢迎使用。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Debian下编译安装Golang
目前(2016),Debian的稳定源只能安装go1.3版本。如果需要最新的版本,只能自行从源码编译安装。
Debian中国
2018/12/20
2.3K0
如何在Ubuntu 16.04上安装Go 1.6
Go是Google开发的一种现代编程语言。它在许多应用程序和许多公司中越来越受欢迎,并提供了一组强大的库。本教程将指导您下载和安装Go 1.6,以及构建一个简单的Hello World应用程序。
爆栈工程师
2018/10/09
1.4K0
源码方式安装go
https://golang.org/doc/install/source#environment
用户2187945
2019/03/13
7710
玩玩树莓派之配置Go环境
前言:昨晚以为下载了Gogs可以直接运行,结果出乎意料cannot execute binary file,系统cpu架构不能执行这个二进制文件,那就只好下源码编译,这又需要依赖Go,并且version>=1.4.0,那就先搭配Go的环境。 ---- Step-One:下载Go源码 对于64位Linux wget https://storage.googleapis.com/golang/go1.4.1.linux-amd64.tar.gz 对于32位Linux wget https://storage.
AlicFeng
2018/06/08
1.2K0
​在tinycorelinux上安装lxc,lxd (2)
在《在tinycorelinux上安装lxc,lxd(1)》中我们讲到源码适配gcc443,由c11退回c99的一些处理,这里依然要处理大量gnu11的事。
minlearn
2020/09/28
1.1K0
如何在Debian 8上安装Go
Go,也称为golang,是由Google开发的一种现代开源编程语言。Go在许多应用程序中越来越受欢迎,它采用极简主义的开发方法,帮助您构建可靠,高效的软件。
物花无语
2018/07/20
1K0
如何部署 Go 语言开发环境
Go是Google开发的一种现代编程语言。它在许多应用程序和许多公司中越来越受欢迎,并提供了一组强大的库。本教程将指导您下载并安装最新版本的Go(本文发布时的Go 1.10),以及构建一个简单的Hello World应用程序。
大数据弄潮儿
2018/11/13
2.1K0
如何部署 Go 语言开发环境
Golang 语言怎么安装多个 Golang 版本的环境?
Golang 语言安装(环境搭建)有三种方式,包括二进制方式安装、源码方式安装和 go 命令方式安装。Golang 语言支持多个平台和操作系统,比如 Windows,Mac 和 Linux。
frank.
2021/06/22
3.3K0
第7节 Go语言环境搭建
当然你也可以登录Golang的国内网站:https://golang.google.cn/
小尘哥
2019/05/28
1.2K0
Go基础系列 | 2. 环境搭建
选择我上面提供的安装包是一种 Linux 下通用的方式。那还有其它更简单的方式吗?回答:是有的。
潇洒哥和黑大帅
2021/06/01
7430
Go基础系列 | 2. 环境搭建
如何在 CentOS 8 上安装 Go
Go,通常被称为 golang,它是一门由 Google 创建的现代化的开源编程语言,它允许你构建实时并且高效的应用。
雪梦科技
2020/05/11
4.1K0
如何在 CentOS 8 上安装 Go
我的Go+语言初体验——ubuntu安装Go+环境问题锦集(二)
通过将 Go 目录添加到$PATH环境变量,系统将会知道在哪里可以找到 Go 可执行文件
红目香薰
2022/11/29
3070
我的Go+语言初体验——ubuntu安装Go+环境问题锦集(二)
学Go习-安装教程&HelloWord
Go(又称为Golang)是谷歌开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。Go于2009年11月正式宣布推出,成为开放源代码项目,并在Linux及Mac平台上进行了实现,后来追加了Windows系统下的实现。
java技术爱好者
2021/03/14
2.5K0
Mac M1原生(ARM64)Golang dev&debug
通过本文最终实现了在M1芯片的Mac mini上的Goland的开发,并通过编译源码解决了无法DEBUG的问题。
yoyofx
2021/01/18
3.9K0
如何在CentOS 7上安装Go 1.7
Go,通常被称为golang,是由Google开发的一种开源编程语言。它采用极简主义的开发方法,可以轻松构建简单,可靠,高效的软件。本教程将指导您下载和安装Go 1.7,以及在CentOS 7服务器上编译和执行基本的“Hello,World!”程序。
何处惹尘埃
2018/10/09
2K0
Hyperledger Fabric 环境搭建
ubuntu golang docker docker-compose fabric 源码
R0A1NG
2022/02/19
1.3K0
如何在 Ubuntu 20.04 上安装 Go
Go有时也称为“Golang”,是 Google 于 2012 年发布的一种开源编程语言。Google 的目的是创建一种可以快速学习的编程语言。
梦溪
2021/09/23
1.5K0
Golang安装和配置
在Mac,Windows和Linux是那个平台上都支持Golang,您可以从 https://golang.org/dl/下载相应平台的二进制文件。该网站在国内不容易访问,所以可以访问https://www.studygolang.com/dl进行安装软件的下载。
会呼吸的Coder
2020/02/17
2K0
Golang安装和配置
Debian 环境中安装git服务器 Gogs(上)
Gogs 是由 Go 语言编写的,自由开源的 Git 服务。Gogs 是一款无痛式自托管的 Git 服务器,能在尽可能小的硬件资源开销上搭建并运行您的私有 Git 服务器。Gogs 的网页界面和 GitHub 十分相近,且提供 MySQL、PostgreSQL 和 SQLite 数据库支持。
Debian中国
2018/12/21
1.3K0
简述Go以及搭建Go环境
Go(又称Golang)是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。
新人小试
2020/02/25
1.2K0
相关推荐
Debian下编译安装Golang
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档