golang基于当前1.9版本进行源码编译升级到1.10

时间:2023-03-08 17:13:48

一、起因

golang出了最新的1.10版本,而刚出的vgo也是需要基于该最新版本的。为了测试vgo,因此需要将我的v1.9升级到v1.10版本。

安装过golang的同学都知道,golang常用的有2种安装方式。

  • 直接安装官方编译好的包。比如下载go1.7.4.darwin-amd64.tar.gz
  • 基于源码进行编译安装。

下面来说说基于源码编译安装。网上的很多教程在说明源码安装时,都在说明需要基于1.4.3版本,即先有一个母版本的go,再用来编译最新要安装的版本。

但是,我要说下但是。我最开始使用golang时,是直接下载的编译包。直接绕开了早期的版本和母版本的问题。这次想升级,也不想再去下载基于用C写的版本了。因此尝试直接使用当前1.9版本进行升级安装。

二、升级操作

当前环境说明:

  • 系统:mac
  • 二进制安装目录:~/go1.9/

2.1 下载源码

这里没有从gitlhub下载。因为下载量会比较大。本次直接从官网进行下载。

#下载 go1.10 放在当前家目录
cd
# 因为一些国内的网站还没有最新的1.10的安装包,因此才考虑使用源码,
# 但源码下载也需要FQ,如果你用代理,可以直接在命令行加上代理
export https_proxy=YOUR_IP:YOUR_PORT
wget wget https://dl.google.com/go/go1.10.src.tar.gz
# 解压
tar -zxvf go1.10.src.tar.gz

2.2 安装

安装前需要设置一个环境变量GOROOT_BOOTSTRAP。即用来指定当前golang的二进制目录。

go env | egrep 'PATH|ROOT'
GOPATH="/Users/song/jungleCode"
GOROOT="/Users/song/go1.9" # set 环境变量
GOROOT_BOOTSTRAP=/Users/song/go1.9/ cd go1.10/src/
time bash -x ./all.bash

启动执行后,主要会进行如下操作:

  • build相关的工具链toolchain。
  • 对内置的package进行测试。
  • 运行runtime,sync等
  • 检查竞争(Testing race detector)
  • 进行API检查

最后,完成安装,安装后的二进制在当前目录下的bin目录。安装用时1240秒。以后是安装结束时的最后4行日志。

# Installed Go for darwin/amd64 in /Users/song/go1.10
# Installed commands in /Users/song/go1.10/bin
# *** You need to add /Users/song/go1.10/bin to your PATH.
# bash -x ./all.bash 1240.55s user 456.11s system 294% cpu 9:35.17 total

2.3 设置新环境

如上,已经生成了新的二进制。需要修改golang的环境变量GOROOT。

vim ~/.zshrc
# 将GOROOT的值由/Users/song/go1.9改变/Users/song/go1.10
source ~/.zshrc
go version
# go version go1.10 darwin/amd64

大功告成。

终于可以玩vgo了。推荐2个链接。

https://zhuanlan.zhihu.com/p/33926171

https://zhuanlan.zhihu.com/p/33935373