从源代码构建 Go 开发环境


Go 1.5 之前的版本

安装C 语言开发环境

在Go 1.5 之前的版本(比如 1.3、1.4),都会部分的依赖 C 语言的工具链,所以如果你有C 语言的开发环境,就可以直接构建 Go 的开发环境了。如果没有 C 语言的开发环境,那就先安装C 语言的开发环境。

#我的目标机器是centos
yum install gcc

建立 Go 的目录结构

基本目录是这样的

$HOME/golang
|--3rd
|--go
|--own

因为我们还要安装 Go 1.5 之后的版本,需要向后兼容,所以我们需要把目录进行一下修改。添加版本目录。并且把go 指向我们当前使用的Go 版本目录。修改后的目录结构如下:

$HOME/golang
|--3rd
|--go -> go1.
|--go1.
|--own

此时的 go 目录是软链接,指向 go1.4。我是使用下载好的 Go 源码进行安装的,所以首先把源码解压为go1.4目录。

环境变量

GOPATH=$HOME/golang/3rdpkg:$HOME/golang/go:$HOME/golang/own

按照这样的配置,当使用 go get 获取 Go 包的时候,会首先导入到 $GOPATH 的第一个路径,也就是 3rdpkg 目录下。便于把第三方包和自己的项目区分开来。

设置 GOROOT

GOROOT=$HOME/golang/go

设置 PATH 变量

PATH=$PATH:$GOROOT/bin/

此时完整的环境变量设置为

GOPATH=$HOME/golang/3rdpkg:$HOME/golang/go:$HOME/golang/own
GOROOT=$HOME/golang/go
PATH=$PATH:$GOROOT/bin

安装 Go 1.4

cd $HOME/golang/go/src
./all.bash

执行完成之后,Go 1.4 就部署完成了。


Go 1.5 之后的版本

在 Go 1.5 以及之后的版本都移除了对 C 语言的依赖,而是使用 Go 编译新的Go 语言版本。所以我们的目录结构需要再做一下更改,让 Go 1.4来帮助我们构建新的Go 环境。

因为我们的目标是Go 1.5之后的版本,所以1.6 、1.7都是适用的,结下来我们编译最新的Go 1.7 环境。那我们的目录结构就是下面的样子了:

$HOME/golang
|--3rd
|--go -> go1.
|--go-bootstrap -> go1.
|--go1.
|--go1.
|--own

环境变量也做相应的修改

GOPATH=$HOME/golang/3rdpkg:$HOME/golang/go:$HOME/golang/own
GOROOT=$HOME/golang/go
PATH=$PATH:$GOROOT/bin
GOROOT_BOOTSTRAP=$HOME/golang/go-bootstrap cd $HOME/golang/go/src
./all.bash

参考 这里


同步发表:http://www.fengbohello.top/blog/p/golang

从源代码构建 Go 开发环境的更多相关文章

  1. Python黑帽编程1.2 基于VS Code构建Python开发环境

    Python黑帽编程1.2  基于VS Code构建Python开发环境 0.1  本系列教程说明 本系列教程,采用的大纲母本为<Understanding Network Hacks Atta ...

  2. 使用Intellij IDEA构建spark开发环境

    近期开始研究学习spark,开发环境有多种,由于习惯使用STS的maven项目,但是按照许多资料的方法尝试以后并没有成功,也可能是我环境问题:也可以是用scala中自带的eclipse,但是不太习惯, ...

  3. Vagrant 构建 Linux 开发环境

    Vagrant 是一个简单易用的部署工具,用英文说应该是 Orchestration Tool .它能帮助开发人员迅速的构建一个开发环境,帮助测试人员构建测试环境, Vagrant 基于 Ruby 开 ...

  4. gulp + gulp-better-rollup + rollup 构建 ES6 开发环境

    gulp + gulp-better-rollup + rollup 构建 ES6 开发环境 关于 Gulp 就不过多啰嗦了.常用的 js 模块打包工具主要有 webpack.rollup 和 bro ...

  5. 使用create-react-app 快速构建 React 开发环境以及react-router 4.x路由配置

    create-react-app 是来自于 Facebook,通过该命令我们无需配置就能快速构建 React 开发环境. create-react-app 自动创建的项目是基于 Webpack + E ...

  6. react学习笔记(一)用create-react-app构建 React 开发环境

    React 可以高效.灵活的用来构建用户界面框架,react利用高效的算法最小化重绘DOM. create-react-app 是来自于 Facebook,通过该命令不需配置就能快速构建 React ...

  7. JDK1.7+eclipse 4.4(luna)+pydev4.4.5构建django开发环境

    最近一直用pycharm搞django学习,但是到2017年随着版本的不断更新,启动之慢,吃资源吃内存越来越严重.果然想找一个IDE替代品. 之前用java开发分布式WEB应用,用eclipse开了N ...

  8. 【React】使用 create-react-app 快速构建 React 开发环境

    create-react-app 是来自于 Facebook,通过该命令我们无需配置就能快速构建 React 开发环境. create-react-app 自动创建的项目是基于 Webpack + E ...

  9. XamarinForms教程构建XamarinForms开发环境

    构建XamarinForms开发环境 所谓Xamarin.Forms的开发环境,就是指在基本硬件和数字软件的基础上,为支持系统软件和应用软件的工程化开发和维护而使用的一组软件,简称SDE.对于任何的程 ...

随机推荐

  1. Ubuntu14.04 64位配置Caffe 教程(基于CUDA7.5)

    最新博客地址已转到: http://blog.csdn.net/zzlyw?viewmode=contents   ------------------------------------------ ...

  2. ROW_NUMBER()与PARTITION BY 实例

    环境:SQL Server 2008 R2 数据表结构 SELECT A.* FROM [tbiz_AssScoreWeidu] A SELECT A.* ,ROW_NUMBER() OVER ( P ...

  3. pullToRefreshListView的简单使用

    1.加入library后直接布局 library下载地址:http://pan.baidu.com/s/1dFJu8pF <com.handmark.pulltorefresh.library. ...

  4. iOS coredata 数据库的加密(待研究)

    https://github.com/project-imas/encrypted-core-data 使用起来很方便,底层还是使用了SQLCipher,有时间要研究一下! 数据库的密码不能用固定字符 ...

  5. 设计模式--外观模式Facade(结构型)

    一.外观模式 外观模式提供了一个统一的接口,用来访问子系统中的一群接口.外观模式定义了一个高层接口,让子系统更容易被使用. 二.UML图 三.例子 举个编译器的例子,假设编译一个程序需要经过四个步骤: ...

  6. c模拟c++ const 转换

    #include <stdio.h> int main(){ const int constant = 21; const int* const_p = &constant; in ...

  7. 怎么写makefile?(转)

    跟我一起写 Makefile 陈皓 第一章.概述 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和 pr ...

  8. Tomcat7.0+的JNDI问题

    上次搭建spring+springmvc+mybatis框架时用的第三方连接池jar包,但是部署到tomcat中后访问没有问题,但是启动时报了个JNDI的错,我没用JNDI你给我报什么,fuck!把错 ...

  9. Vi命令备忘

    备忘 Ctrl+u:向文件首翻半屏: Ctrl+d:向文件尾翻半屏: Ctrl+f:向文件尾翻一屏: Ctrl+b:向文件首翻一屏: Esc:从编辑模式切换到命令模式: ZZ:命令模式下保存当前文件所 ...

  10. Js 日期 多少分钟前,多少秒前

    ;(function(window){ /** * [dateDiff 算时间差] * @param {[type=Number]} hisTime [历史时间戳,必传] * @param {[typ ...