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:\go\bin目錄加入到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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM