在 Ubuntu 開啟 GO 程式編譯之旅

三人行工作室發表於2019-06-26

本文將使用 putty 連線到一臺阿里雲 Ubuntu 16.04 伺服器,在其上安裝 go 語言的編譯環境,旨在呈現從安裝到“你好,世界!”涉及的方方面面,希望完成這個過程無須覓它處。

1. 安裝

方式一使用 apt-get

apt-get install golang-go

執行完成之後,會把 golang 安裝在這個位置:/usr/lib/go-1.6/,go 命令會在該目錄的 bin 子目錄下,同時,/usr/bin 下會有該命令的檔案連結。

當然,也許你並不知道到底安裝在哪,可以通過以下命令找找觀察判斷一下。

# 找名字為 go 的檔案
find / -name go

執行 /usr/bin/go version,結果如下,顯示的版本號為 go1.6.2,版本比較低。

在 Ubuntu 開啟 GO 程式編譯之旅

是不是想解除安裝?使用以下命令可以完成解除安裝,跟安裝一一對應。

apt-get --purge remove golang-go

方式二使用 wget

直接下載想要的版本進行安裝,一切皆在掌控之中。通過以下兩條命令,我們把 golang 安裝在 /usr/local/go 下。

# 下載
wget https://storage.googleapis.com/golang/go1.9.1.linux-amd64.tar.gz
# 解壓
tar -xzf go1.9.1.linux-amd64.tar.gz -C /usr/local

2. 設定環境變數

這裡會涉及到3個環境變數,分別是 PATH、GOROOT、GOPATH。
PATH,是為了讓 go 命令隨處可敲。
GOROOT,代表 golang 的根目錄,在設定PATH時可以用一下,如 export PATH=$GOROOT/bin。
GOPATH,特別重要,單獨做一節(2.2)來講。

2.1 設定

環境變數可以設定在不同的檔案中。
etc/profile : 對所有使用者生效
~/.profile : 對當前使用者生效

配置在哪都行,能用到即可。在配置檔案末尾加上以下文字。

export GOROOT=/usr/local/go
export GOPATH=/usr/goprojs:$GOROOT
export PATH=$GOROOT/bin:$PATH:$GOPATH/bin

GOPATH、PATH 多個路徑,中間使用冒號分隔。
配置完成後,使用source ~/.profile 讓其立即生效。

2.2 GOPATH

GOPATH 是GO程式找依賴包的路徑。
其子目錄 src 中可放置各個包的原始碼,編譯時會通過 GOPATH 去引用它們。
子目錄 bin 則是編譯之後的可執行檔案,這就是為什麼環境變數PATH 裡要加上 $GOPATH/bin 的原因,讓編譯的執行檔案在執行搜尋路徑範圍內方便執行。
子目錄 pkg,編譯包的中間檔案,不太關心它。

GOPATH 的第一個路徑特別重要
使用 go get 下載的包都會安裝在第一個路徑,所以如果想讓公共包統一在某處,應該要為它單獨建立一個路徑作為GOPATH的第一個路徑,從而使得 go get 總去向那裡。實際專案最好另建路徑加入GOPATH,這樣即在引用範圍 go get 又影響不到。

附 go get 可帶引數:
|引數|描述|
|------|------|
| -v |顯示操作流程的日誌及資訊 |
| -u |僅下載丟失的包,不更新已存在的 |
| -d | 只下載,不安裝 |
| -insecure | 允許使用HTTP,而不一定要HTTPS |

3. 你好,世界!

3.1 編寫程式碼

建立程式碼檔案。點此可以線上嚐鮮 GO 程式碼

vi hello.go
// 輸入以下程式碼儲存
package main
import "fmt"

func main(){
    fmt.Println("Hello world!")
}

3.2 執行

直接在檔案目錄執行以下命令執行。

go run hello.go
// 或者
go build hello.go
./hello

4. 附件

設定環境變數的配置檔案,有網友總結:

/etc/profile,/etc/bashrc 是系統全域性環境變數設定
~/.profile,~/.bashrc使用者家目錄下的私有環境變數設定
當登入系統時候獲得一個shell程式時,其讀取環境設定檔有三步
1).首先讀入的是全域性環境變數設定檔/etc/profile,然後根據其內容讀取額外的設定的文件,如
/etc/profile.d和/etc/inputrc
2).然後根據不同使用者帳號,去其家目錄讀取~/.bash_profile,如果這讀取不了就讀取~/.bash_login,這個也讀取不了才會讀取
~/.profile,這三個文件設定基本上是一樣的,讀取有優先關係
3).然後在根據使用者帳號讀取~/.bashrc
~/.profile與~/.bashrc的區別
都具有個性化定製功能
~/.profile可以設定本使用者專有的路徑,環境變數,等,它只能登入的時候執行一次
~/.bashrc也是某使用者專有設定文件,可以設定路徑,命令別名,每次shell script的執行都會使用它一次

相關文章