Linux / Mac
(最後更新: 2016-03-28)
Linux : https://storage.googleapis.com/golang/go1.6.linux-amd64.tar.gz
Mac : https://storage.googleapis.com/golang/go1.6.darwin-amd64.tar.gz
[2] Install
Linux : sudo tar -C /usr/local -xzf go1.6.darwin-amd64.tar.gz
Mac : sudo tar -C /usr/local -xzf go1.6.darwin-amd64.tar.gz
如果要重安裝直接 remove /usr/local/go
再執行上面指令就可以了
[3] Create essential folders
在家目錄下建立 go, 將外部套件與原始程式分離
.bashrc(linux) / .bash_profile(mac) :
export GOPATH=/Users/lij/go
export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
Linux exec : source ~/.bashrc
Mac exec : source ~/.bash_profile
解壓縮完且 .bashrc
設定好以上就算安裝完成了, 可用 go version
測試是否安裝成功
Upgrade go version
- 移除
/usr/local/go
- 將官網載下來的 go 解壓縮到
/usr/local
- Done!
Mac upgrade go version 後還是顯示舊的版本
可能是曾經有用過 brew
安裝過 go, 即使你更新完 /usr/local/go
version 還是顯示舊版的
使用 which go
可以發現它的指令是指到 /usr/local/bin/go
而它又是 link 到 /usr/local/Cellar/go/{舊版號}/bin/go
建議直接執行 brew uninstall go
, 它會幫你把 /usr/local/Cellar/go
移除掉 (Uninstalling /usr/local/Cellar/go/1.7... (6,435 files, 250.6MB)
)
再 go version
後的版本就會是正常了
[註] 編譯
在本機編譯 :
go build
假如要編譯給 windows 的電腦執行 :
# 32 位元
GOOS=windows GOARCH=386 go build -o test.exe
# 64 位元
GOOS=windows GOARCH=amd64 go build -o test.exe
假如你的 project 有引入 C 程式則需要使用 CGO 來編譯 :
CGO_ENABLED=1 GOOS=windows GOARCH=amd64 go build -o test.exe
windows :
go 下載頁面 按照電腦的 OS 選擇你要下載的, 下載完直接安裝
安裝好 GO 後, 還需要 GCC 編譯環境, 因為 Mac 的 Xcode 本身就有 GCC, windows 沒有, 所以選擇了 mingw 這個輕量型的 GCC
參考安裝 MinGW
設定 GOPATH, 這是放一些你自己或 go get
from github 存放的地方
- 在
c:\Go
下建立 mygo 資料夾, 並且在 mygo 下建立三個資料夾 src, pkg, bin
- 設定環境變數
GOROOT : C:\Go
GOPATH : C:\Go\mygo
PATH : 在最後面加上 ;%GOROOT%\bin;%GOPATH%\bin;C:\Program Files (x86)\Git\bin
除了加上 GOROOT\bin、GOPATH\bin, 也可視需求加上 git bin 的路徑
重新啟動 cmd 使變數生效
編譯本機系統 GO 的編譯環境, 直接以滑鼠點擊執行 C:\Go\src\all.bat
跑完後, 建立自定義檔名的 .bat
檔, 如 C:\Go\src\test.bat
:
set CGO_ENABLED=0
set GOARCH=386
set GOOS=windows
call make.bat --no-clean
pause
雙擊它執行
然候在 C:\Go\bin
建立自定義檔名的 .bat
檔, 如 exec.bat :
set GOARCH=386
set GOOS=windows
go build
然候新增一個 hello.go 的檔案測試
package main
import (
"fmt"
"bufio"
"os"
)
func main() {
fmt.Printf("Hello, world\n")
bufio.NewReader(os.Stdin).ReadBytes('\n') // 在 windows 結束後讓它停留在最後一行, 不要直接關掉
}
雙擊 exec.bat, 應該會在 C:\Go\bin
下出現 bin.exe
這個可執行檔
或者是在 cmd 到 c:\Go\bin
, go build hello.go
執行它如果出現 Hello, world 恭喜你~設定完成!
Hello World!
hello.go :
package main
import "fmt"
func main() {
fmt.Printf("Hello, world\n")
}
Package fmt implements formatted I/O with functions analogous to C’s printf and scanf. The format ‘verbs’ are derived from C’s but are simpler.
Read detail
execute :
$ go run hello.go
Hello, world
編譯成執行檔
除了使用 go build
自動幫我們生成好執行檔, 我們也可以手動編譯及連結
ubuntu 手動編譯
/usr/lib/go/pkg/tool/linux_amd64/6g -o hello.6 hello.go
/usr/lib/go/pkg/tool/linux_amd64/6l -o hello hello.6
./hello
Mac 手動編譯
/usr/local/go/pkg/tool/darwin_amd64/6g -o hello.6 hello.go
/usr/local/go/pkg/tool/darwin_amd64/6l -o hello hello.6
./hello
編譯器
5g : ARM
6g : AMD 64 (x86-64)
8g : Intel 386 (X86)
386 : x86 架構的 32 位元 cpu 指令集, 簡稱 i386
AMD 64 : AMD 擴展 x86 的 64 位元指令集
[20140309] golang編譯器 :
- 6g(X86-64)、8g(X86)、5g(arm) (及其支援工具,總稱為 gc)用 C 寫成,使用 yacc/Bison 作為解析器。Gccgo 是一個使用標準GCC作為後端的Go編譯器
- 6g 是amd64的go編譯器,它生成的是 .6 檔案
- 而 386 使用 8g 命令,它生成的一般是 .8 格式的檔案
- 5g 是用於 arm 的 cpu,同理 amd64 用 6l,386 用 8l, arm 用 5l 的鏈接器!)