一、起因

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

golang基于当前1.9版本进行源码编译升级到1.10的更多相关文章

  1. CentOS6.6源码编译升级GCC至4.8.2

    升级前提 源码编译需要至少要有一个可用的gcc编译器. 可以用过yum自动安装或者手动下载rpm包安装. 通过yum可以看到至少需要下面这些安装包,所以可以到许多rpm package站点中搜索下载相 ...

  2. Ubuntu 16.04源码编译安装nginx 1.10.0

    一.下载相关的依赖库 pcre 下载地址 http://120.52.73.43/jaist.dl.sourceforge.net/project/pcre/pcre/8.38/pcre-8.38.t ...

  3. wso2esb源码编译总结

    最近花了两周的空闲时间帮朋友把wso2esb的4.0.3.4.6.0.4.7.0三个版本从源码编译出来了.以下是大概的一些体会. wso2esb是基于carbon的.carbon是个基于eclipse ...

  4. 基于cdh5.10.x hadoop版本的apache源码编译安装spark

    参考文档:http://spark.apache.org/docs/1.6.0/building-spark.html spark安装需要选择源码编译方式进行安装部署,cdh5.10.0提供默认的二进 ...

  5. 源码编译安装LAMP环境及配置基于域名访问的多虚拟主机

    实验环境及软件版本: CentOS版本: 6.6(2.6.32.-504.el6.x86_64) apache版本: apache2.2.27 mysql版本:  Mysql-5.6.23 php版本 ...

  6. 基于Eclipse IDE的Ardupilot飞控源码阅读环境搭建

    基于Eclipse IDE的Ardupilot飞控源码阅读环境搭建 作者:Awesome 日期:2017-10-21 需准备的软件工具 Ardupilot飞控源码 PX4 toolchain JAVA ...

  7. 从源码(编译)安装golang

    从源码安装golang 通常情况下,安装go只需要在官网(https://golang.org/dl/)下载适合系统的二进制发布包,按照安装说明进行安装即可. 对于Linux, Mac OS X和Fr ...

  8. 基于nopCommerce的开发框架(附源码)

    .NET的开发人员应该都知道这个大名鼎鼎的高质量b2c开源项目-nopCommerce,基于EntityFramework和MVC开发,拥有透明且结构良好的解决方案,同时结合了开源和商业软件的最佳特性 ...

  9. 基于源码编译安装openssh

     最近的,openssl/openssh等相继漏洞的暴露,让暴露在公网的linux.沦陷为肉鸡的正营... 没办法,还是升级版本... 00.openssh简介 OpenSSH 是一组安全远程的连接工 ...

随机推荐

  1. 记录--linux下mysql数据库问题

    本次主要记录一下linux下mysql数据库的一些问题,也是之前经常用到的知识,这里简单总结一些问题,方便自己以后的回顾.原来一直使用的是阿里云的RDS数据库mysql版,主要是因为上次阿里云做活动可 ...

  2. Shodan全世界在线设备搜索引擎

    reproduction from https://danielmiessler.com/study/shodan/ What is Shodan? Shodan is a search engine ...

  3. Flutter——AlertDialog组件、SimpleDialog组件、showModalBottomSheet组件(弹窗组件)

    AlertDialog组件 import 'package:flutter/material.dart'; void main() { runApp(MaterialApp( title: " ...

  4. 【视频】谷歌大佬30分钟让你入门机器学习(2019谷歌I/O资源分享)

    如果你是个谷粉,就一定会知道: 谷歌向来都很大胆.当所有的科技公司都在讲产品.讲利润的时候,2019年的谷歌开发者大会的主题却是:人文关怀.要知道,这是政府操心的事,而不是一家公司的任务. 谷歌敢这样 ...

  5. servlet版本与tomcat版本对应关系,各版本web.xml头信息写法

    The mapping between the specifications and the respective Apache Tomcat versions is: Servlet Spec JS ...

  6. springboot知识点【笔记】

    # **一.**Spring Boot 入门 ## 1.Spring Boot 简介 > 简化Spring应用开发的一个框架:>> 整个Spring技术栈的一个大整合:>> ...

  7. MySQL进阶14--标识列(自增序列/auto_increment)--设置/展示步长--设置/删除标示列

    /*进阶14 标识列 又称为自增序列; 含义 : 可以不用手动的插入值, 系统提供默认的序列值(1-->n) 特点 : 1.标识列必须和主键搭配? 不一定,但要求是一个key 2.一个表可以有几 ...

  8. Git----拉取远程分支,git pull,git rebase,git pull --rebase的区别

    git pull 相当于自动的 fetch 和 merge 操作,会试图自动将远程库合并入本地库,在有冲突时再要求手动合并. git rebase 可以确保生产分支commit是一个线性结构,方便ro ...

  9. 多继承以及MRO顺序

    class A: def test(self): print("A --- test方法") def demo(self): print("A --- demo方法&qu ...

  10. Codeforces Round #464 (Div. 2) D题【最小生成树】

    Valya and Tolya are an ideal pair, but they quarrel sometimes. Recently, Valya took offense at her b ...