Go是由Google开发的一种现代开源编程语言。它很简单,并且拥有一组强大的库和工具,可以轻松搭建可靠,高效的应用程序。
如果您想根据最新版本的语言测试Go应用程序,为Go代码库做贡献,或者有更好的Go版本管理,则需要从源代码搭建Go。本教程将向您展示如何搭建Go,涵盖一些实际考虑因素,以及搭建“Hello,World”测试应用程序。
要学习本教程,您需要:
sudo
命令的非root
的账户,服务器的内存大于1G。没有服务器的用户可以购买和使用腾讯云服务器或者直接在腾讯云实验室Ubuntu服务器上机安装Go 。
在开始之前,更新一下本地的软件包。
$ sudo apt-get update
默认情况下,Ubuntu没有提供搭建Go所需的所有软件包,例如编译器,库和工具。通过安装build-essential
、包括gcc
用于编译C 的包、g++
用于编译C ++和make
自动化搭建工具,这样可以很容易地安装搭建和编译依赖项。
$ sudo apt-get install build-essential
安装完成后,您将拥有从源代码搭建Go所需的所有工具。接下来,您需要Go 1.4二进制文件。
建立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
文件下载到您的主目录。
$ cd ~
$ curl -O https://storage.googleapis.com/golang/go1.4.3.linux-amd64.tar.gz
虽然此文件是从正版源下载的,但验证已下载内容的完整性仍然是一种良好的安全措施。通过比较下载页面上提供的文件哈希和下载文件的哈希,可以轻松完成此操作。
首先,获取您下载的文件的哈希值。
$ sha1sum go1.4.3.linux-amd64.tar.gz
将此命令的输出与Go下载页面上提供的校验和进行比较。
332b64236d30a8805fc8dd8b3a269915b4c507fe go1.4.3.linux-amd64.tar.gz
如果校验和匹配,则可以解压缩文件。
$ 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
命令重命名目录。
$ mv go go1.4
现在,您拥有从源代码搭建Go的必要依赖项。如果要将Go 1.4从主目录移到另一个位置,可以继续下一步。不过不想移动,就可以直接到步骤4,获取Go Source。
当Go搭建脚本运行时,它将根据名为GOROOT_BOOTSTRAP
的环境变量查找Go 1.4 。如果未设置该变量(默认情况下),则搭建脚本将假定该go1.4
目录位于主目录中。如果要将Go 1.4移动到其他位置,可以使用GOROOT_BOOTSTRAP
变量。在这里,我们将其移至/usr/local/go1.4
。
首先,移动目录本身。
$ sudo mv go1.4 /usr/local
接下来,您需要通过修改~/.profile
文件来设置环境中的路径。
$ sudo nano ~/.profile
在〜/.profile
文件末尾,添加以下行:
. . .
export GOROOT_BOOTSTRAP=/usr/local/go1.4
保存文件并退出。要使此更改生效,请刷新您的个人资料。
$ source ~/.profile
接下来,您将克隆Go源。
存储Go二进制文件的推荐位置是/usr/local
。但是,您可以将它存储在您喜欢的任何地方。
进入/usr/local
并使用Git克隆存储库。
$ 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
目录。接着进入该目录。
$ cd go
在搭建之前,我们需要选择我们想要的Go版本。
Go源为每个可用版本提供不同的Git分支。分支机构的名称是:
master
用于开发中的最新版本goversion
稳定版本在这里,我们将使用Go 1.7.4,这意味着我们想要使用go1.7.4
分支。
警告:不建议
master
在生产中使用Go 的开发版本(即分支)。它没有经过测试,可能存在错误。开发版本适用于应用程序测试,但仅使用已发布的版本进行生产。
要更改分支,请使用git checkout
命令。您需要root权限才能执行这些命令,因为/usr/local
和/usr/local/go1.4
是root
才有权限处理。
$ sudo git checkout go1.7.4
完成此步骤后,您已下载您喜欢的版本的Go源代码。您已准备好进入本教程的关键部分:搭建Go。
要搭建go,您需要执行src/all.bash
,这是源代码附带的bash脚本。该脚本将检查您是否具有所有必需的依赖项,运行一些测试并完成搭建。
执行脚本,但请注意,如果更改了Go 1.4.3二进制文件的位置,则需要添加-E
标志(即sudo -E bash ./all.bash
)来保留环境变量。
$ cd src
$ sudo bash ./all.bash
脚本运行需要一点时间。搭建完成后,您将看到以下输出:
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导致的结果。
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中修复,因此将其添加到新创建的分支中。
$ cd ..
$ sudo git checkout -b go1.7.4-timefix
$ sudo git cherry-pick c5434f2973a87acff76bac359236e690d632ce95
执行此操作后,您可以再次运行该脚本。(如果移动了Go 1.4.3二进制文件,请不要忘记-E
标志。)
$ cd src
$ sudo bash ./all.bash
现在搭建了Go,您需要为它设置一些环境变量。
环境变量是定制Go安装的有效方法。我们将介绍最重要和最有用的内容。
要开始使用Go,您需要将Go二进制路径/usr/local/go/bin
添加到PATH
和GOPATH
环境变量中。 GOPATH
是存储Go应用程序代码和二进制文件的地方,我们将其指定为〜/ work
,当然您可以自由地对其进行自定义。
将这些变量添加到~/.profile
文件中。用您喜欢的文本编辑器打开它:
$ nano ~/.profile
在〜/ .profile
文件末尾添加以下行:
. . .
export GOPATH=$HOME/work
export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin
如果您在非默认路径中安装Go,,比如在/usr/local/go
中,我们需要定义GOROOT
变量。在这种情况下,还要添在〜/ .profile
中添加:
export GOROOT=$HOME/go
export GOPATH=$HOME/work
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
保存文件并退出。要使这些更改生效,刷新了一下 profile
。
$ source ~/.profile
成功完成此步骤后,您将获得功能齐全的Go。接下来,我们将测试它以确保一切都按预期工作。
一种常见的测试方法是编写并运行一个简单的“Hello,World”应用程序。
要做到这一点,首先我们将创建并移动到基于GOPATH的应用程序文件目录中。您可以在Go路径中选择任何您喜欢的内容,但是作为这里的示例,我们将设置如果使用GitHub管理代码所需的层次结构。即使没有GitHub帐户,这个层次结构也可以工作。
$ mkdir -p $GOPATH/src/github.com/your_github_username/test_project
$ cd $GOPATH/src/github.com/your_github_username/test_project
接下来,创建一个名为“Hello,World”的Go文件。
$ nano hello.go
将以下代码添加到hello.go
文件中:
package main
import "fmt"
func main() {
fmt.Printf("Hello World!\n")
}
此示例使用fm
t包,它实现了Printf()
之类的I/O
函数,并定义了main()
函数,该函数将在程序运行时打印Hello World
。
保存并退出文件,然后使用Go命令install
进行编译。
$ go install github.com/your_github_username/test_project
编译完成后,可以使用以下命令运行它:
$ hello
你会看到Hello World!打印到终端,这意味着你的Go工作正常。
本教程设置了Go 1.7.4。如果要使用其他版本,则需要更改活动的Git分支并重建Go。
要查看当前的Go版本,您可以使用go version
。
$ go version
go version go1.7.4 linux/amd64
举个例子,我们将切换到Go版本为1.6.4。此版本位于go1.6.4
分支中,因此切换到它。
$ cd /usr/local/go
$ sudo git checkout go1.6.4
要确保所有内容都是最新的,请运行git pull
以获取所选分支的最新更改。
$ sudo git pull origin go1.6.4
现在,像以前一样运行搭建脚本,确保在步骤3中重新定位Go 1.4时添加-E
标志。
$ cd src
$ sudo bash ./all.bash
这需要一些时间才能完成。搭建完成后,您将看到以下输出:
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 删除。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有