返回介绍

上卷 程序设计

中卷 标准库

下卷 运行时

源码剖析

附录

安装

发布于 2024-10-12 19:16:08 字数 2091 浏览 0 评论 0 收藏 0

手工安装,了解如何自举(bootstrap)编译。

1. 发行版

下载预编译的发行版(os_arch.tar.gz)。解压缩,将 go/bin 目录添加到系统搜索路径。

# 下载。注意平台和架构。
$ wget https://go.dev/dl/go1.18.linux-amd64.tar.gz

# 解压缩到指定目录(默认 /usr/local)。
$ tar xf go1.18.linux-amd64.tar.gz -C /usr/local

# 添加搜索路径。
$ export PATH=/usr/local/go/bin:$PATH                 # .profile
# 输出版本号,测试。
$ go version
go version go1.18 linux/amd64

2. 自举编译

自 1.15 起,以 Go 替换 C 重写工具链和运行时。用 Go 编译 Go 源码,即所谓自举。

  • 确认当前环境有可用版本。
  • 下载源码,解压缩,自举编译。
# 当前版本安装路径。
$ go env GOROOT
/usr/local/go
# 下载源码。(注意文件名差异,src 表明源码包)
$ wget https://go.dev/dl/go1.18rc1.src.tar.gz

# 解压缩到临时目录。(编译成功再考虑是否替换现有版本)
$ tar xf go1.18rc1.src.tar.gz -C ~/tmp

进入源码目录,编译。

默认 CGO 需 GCC 支持,执行 apt install gcc build-essential 安装。

使用 GOROOT_BOOTSTRAP 指定当前版本路径。默认路径( /usr/local/go )可省略。

执行 make.bash 仅编译, all.bash 则包括编译和测试。

$ cd tmp/go/src
$ GOROOT_BOOTSTRAP=/usr/local/go ./make.bash

Building Go cmd/dist using /usr/local/go. (go1.18rc1 linux/amd64)
Building Go toolchain1 using /usr/local/go.
Building Go bootstrap cmd/go (go_bootstrap) using Go toolchain1.
Building Go toolchain2 using go_bootstrap and Go toolchain1.
Building Go toolchain3 using go_bootstrap and Go toolchain2.
Building packages and commands for linux/amd64.
---
Installed Go for linux/amd64 in tmp/go
Installed commands in tmp/go/bin
# 编译成功,测试。
$ ../bin/go version
go version go1.18rc1 linux/amd64

3. 多版本

安装多版本,测试新功能(rc, beta),或替换当前版本。

  • 安装下载工具。
  • 下载目标版本。
# 安装指定版本下载工具。
$ go install golang.org/dl/go1.16@latest

# 下载工具存储路径。
$ cd `go env GOPATH`/bin; ls
go1.16
$ ./go1.16 download

Downloaded 100.0% (129003129 / 129003129 bytes)
Unpacking sdk/go1.16/go1.16.linux-amd64.tar.gz ...
Success. You may now run 'go1.16'

同样以该工具执行命令,避免和默认主版本混淆。

$ ./go1.16 version
go version go1.16 linux/amd64

$ ./go1.16 build -h

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文