zoukankan      html  css  js  c++  java
  • Go源码编译安装

    参考文档1:https://www.cnblogs.com/majianguo/p/7258975.html

    参考文档2:http://www.loongson.cn/news/company/456.html

    通常情况下,安装go只需要在官网(https://golang.org/dl/)下载适合系统的二进制发布包,按照安装说明进行安装即可。

    对于Linux, Mac OS X和FreeBSD系统下的安装,三步即可完成:

    1.下载tarballs文件go$VERSION.$OS-$ARCH.tar.gz,例如1.8.3

        wget https://storage.googleapis.com/golang/go1.8.3.linux-amd64.tar.gz)

    2.执行tar -C /usr/local -xzf go$VERSION.$OS-$ARCH.tar.gz提取到 /usr/local

    3.设置环境变量,将/usr/local/go/bin 加入到PATH环境变量。可以通过将

    export PATH=$PATH:/usr/local/go/bin 添加到/etc/profile或$HOME/.profile文件的最后一行。

    对于windows系统下的安装,可以下载msi安装包,安装程序自动将go发布拷贝到c:go目录下,并且将c:goin目录加入到PATH环境变量。

    如果安装位置不是/usr/local/go或者c:go目录,则需要设置GOROOT环境变量,将GOROOT/bin加入到PATH环境变量。

    Go的一大特征是简单,通过下载二进制发布包安装go环境就充分体现了简单性。

    某些时候,可能要使用特殊版本的go,从源码安装,这同样很简单。从源码安装,首先要进行编译。Go 1.5实现了bootstrapping,所以编译1.5以后的版本和编译1.5以前的版本会略有不同。bootstrapping是编译器领域的一个术语,中文翻译为自举或自展,通俗地讲“用要编译的目标语言编写其编译器(汇编器)”。Go1.5开始编译器和运行时完全用Go语言编写(还有少量汇编);go1.4是最后一个用C编写工具链的发布。

    编译go1.4,ubuntu 16.04.2系统

    cd ~
    
    wget https://storage.googleapis.com/golang/go1.4-bootstrap-20170531.tar.gz
    
    tar zxvf go1.4-bootstrap-20170531.tar.gz
    
    cd go/src/
    
    ./all.bash

    编译完成后,可以看到如下输出:

    ALL TESTS PASSED
    
     
    
    ---
    
    Installed Go for linux/amd64 in /home/dell/go
    
    Installed commands in /home/dell/go/bin
    
    *** You need to add /home/dell/go/bin to your PATH.

    成功编译后,将~/go/bin加入到PATH环境变量

    sudo gedit /etc/profile

    在最后一行加入  export PATH=/home/dell/go/bin:$PATH  保存

    source /etc/profile

    执行go version,检查安装

    dell@dell-VirtualBox:~/go/src$ go version
    
    go version go1.4-bootstrap-20170531 linux/amd64

    编译Go1.5及以上版本

    Go 1.5开始编译器和运行时用go自身编写,要编译它们,首先要安装go编译器。all.bash 编译脚本会在$GOROOT_BOOTSTRAP环境变量中查找一个已经存在的go tool chain,实际上就是要有一个编译好的bin/go程序,$GOROOT_BOOTSTRAP/bin/go应该是go二进制命令。有很多选择,可以在官网(https://golang.org/dl/)下载go发布包;也可以用go1.4源码编译,也就是按照上面的步骤编译go1.4,然后再去编译更高版本的go。

    用官方下载的go1.7编译go 1.8,ubuntu 16.04.2 举例:

    cd ~
    
    wget https://storage.googleapis.com/golang/go1.7.6.linux-amd64.tar.gz
    
    wget https://github.com/golang/go/archive/go1.8.3.tar.gz
    
    tar zxvf go1.7.6.linux-amd64.tar.gz
    
    tar zxvf go1.8.3.tar.gz
    
    export GOROOT_BOOTSTRAP=/home/dell/go
    
    cd go-go1.8.3/src
    
    ./all.bash

    编译成功后,有如下输出:

    ##### API check
    
    Go version is "go1.8.3", ignoring -next /home/dell/go-go1.8.3/api/next.txt
    
     
    
    ALL TESTS PASSED
    
     
    
    ---
    
    Installed Go for linux/amd64 in /home/dell/go-go1.8.3
    
    Installed commands in /home/dell/go-go1.8.3/bin
    
    *** You need to add /home/dell/go-go1.8.3/bin to your PATH.

    sudo gedit /etc/profile 将export PATH=/home/dell/go-go1.8.3/bin:$PATH 加入到文件最后一行

    执行go version 检查安装

    dell@dell-VirtualBox:~/go-go1.8.3/src$ go version
    
    go version go1.8.3 linux/amd64

    不管从二进制安装还是从源码安装,go就是这么简单!

    编译mips64el架构下go

    从Go 1.5开始,Go语言的编译器、汇编器和链接器等底层工具链全部使用Go语言来实现。故自Go 1.5开始,从源代码安装Go语言环境时需要使用现成的Go语言编译器来编译Go的源代码,上述过程称为Go语言的自举编译。因此,从源代码安装Go 1.6时要求系统中存在Go 1.4及其以上的Go语言环境。

    GOLANG源码编译,由于1.5版本之后是自举实现的,所有编译要先从1.4版本开始.

    Go1.4的下载链接: https://pan.baidu.com/s/1uti8Qep9WGt_jjp0LtR62Q 提取码: 2f8k

    1、下载后可以解压到任意目录,例如可以通过如下命令将其解压到/opt文件夹下并重命名为go1.4.2

    $ tar xvzf go1.4.2.linux-amd64.tar.gz -C /opt
    $ mv /opt/go /opt/go1.4.2

    2、配置交叉编译的自举编译工具链(用1.4编译工具链,编译1.9甚至更高版本的Go,因为从Go 1.5开始,Go语言的编译器、汇编器和链接器等底层工具链全部使用Go语言来实现。)

    $ export GOROOT_BOOTSTRAP=/opt/go1.4.2

    3、下载go1.9的源码,地址:

    链接: https://pan.baidu.com/s/10gviq7NeZAGty1KIbprqyA 提取码: fwjd

    4、解压到/usr/local下,并重命名go1.9.2

    tar zxfv go1.9.2.src.tar.gz -C /usr/local/
    cd /usr/local
    mv go go1.9.2

    5、进入go1.9.2的src目录下

    cd /usr/local/go1.9.2/src/

    6、编译go1.92(X86).

      编译(X86),命令:

    ./make.bash

    添加到GOROOT变量,并添加到path下,修改/etc/profile,文件最后,添加:

    export GOROOT=/usr/local/go1.9.2
    export PATH=$GOROOT/bin:$PATH


    执行命令:

    source /etc/profile

    使修改配置生效

    执行命令go version检验是否按照成功
    [dyh@ump-pc1 src]$ go version
    go version go1.9.2 linux/amd64

    6、编译go1.92(mips64el).

    在x86机器上,编译mips64el的go,在src目录下,执行命令

    GOOS=linux GOARCH=mips64le ./bootstrap.bash
    [root@ump-pc1 src]# GOOS=linux GOARCH=mips64le ./bootstrap.bash
    #### Copying to ../../go-linux-mips64le-bootstrap
    
    #### Cleaning ../../go-linux-mips64le-bootstrap
    
    #### Building ../../go-linux-mips64le-bootstrap
    
    ##### Building Go bootstrap tool.
    cmd/dist
    
    ##### Building Go toolchain using /opt/go1.4.2.
    bootstrap/cmd/internal/dwarf
    bootstrap/cmd/internal/objabi
    bootstrap/cmd/internal/src
    .
    .
    .
    cmd/compile/internal/amd64
    cmd/compile/internal/arm
    cmd/compile/internal/arm64
    cmd/compile/internal/mips
    cmd/compile/internal/mips64
    cmd/compile/internal/ppc64
    cmd/compile/internal/s390x
    cmd/compile/internal/x86
    cmd/vendor/github.com/google/pprof/internal/report
    cmd/compile
    cmd/vendor/github.com/google/pprof/internal/symbolz
    cmd/vendor/github.com/google/pprof/internal/symbolizer
    cmd/vendor/github.com/google/pprof/third_party/svg
    cmd/vendor/github.com/google/pprof/internal/driver
    cmd/vendor/github.com/google/pprof/driver
    cmd/pprof
    cmd/trace
    cmd/vendor/github.com/google/pprof/internal/proftest
    cmd/vet/internal/cfg
    cmd/vet/internal/whitelist
    cmd/vet
    
    ----
    Bootstrap toolchain for linux/mips64le installed in /home/dyh/Go/1.9.2/go-linux-mips64le-bootstrap.
    Building tbz.
    -rw-r--r--. 1 root root 55791450 9月  18 14:50 /home/dyh/Go/1.9.2/go-linux-mips64le-bootstrap.tbz

    在src上上一级目录中 ,生成go-linux-mips64le-bootstrap.tbz,及可运行在mips64el架构上的二进制文件

    [root@ump-pc1 src]# cd ../..
    [root@ump-pc1 1.9.2]# ls
    go  go1.9.2.src.tar.gz  go-linux-mips64le-bootstrap  go-linux-mips64le-bootstrap.tbz

    把go-linux-mips64le-bootstrap.tbz拷贝到mips64el机器上,解压到/usr/local/go1.9.2路径下

    export GOROOT=/usr/local/go-linux-mips64le-bootstrap
    export PATH=$GOROOT/bin:$PATH

    校验安装准确性

    [root@node110 go-linux-mips64le-bootstrap]# source /etc/profile
    [root@node110 go-linux-mips64le-bootstrap]# go version
    go version go1.9.2 linux/mips64le
  • 相关阅读:
    java导出pdf格式文档
    本地文件夹选择框
    将文件解除占用
    Windows 进入上帝模式窗口
    Windows 10 系统获取密钥方法
    CentOS7 systemctl 命令
    一键立即息屏
    定时关闭程序
    CentOS 7 FTP的安装与配置
    SQL基础
  • 原文地址:https://www.cnblogs.com/dyh004/p/9669406.html
Copyright © 2011-2022 走看看