golang編譯源代碼和交叉編譯方法


golang編譯源代碼和交叉編譯方法

編譯源代碼

golang編譯其實很簡單,下載一份最新的源代碼後,進入src目錄運行all.bash便可,
可是你可能會遇到下面問題,這是由於如今golang都是用go語言編譯的了,因此你的系統必須先安裝好 >= go1.4 的版本.git

./all.bash 
Building Go cmd/dist using /home/ailumiyana/go1.4.
ERROR: Cannot find /home/ailumiyana/go1.4/bin/go.
Set $GOROOT_BOOTSTRAP to a working Go tree >= Go 1.4.
ailumiyana@sola:~/open_src/go/src$ export GOROOT_BOOTSTRAP=/usr/local/go1.4

編譯go1.4

一、先上github上下載一份源代碼https://github.com/golang/gogithub

而後進入目錄,查看所有分支。
能夠看到當前最新的release分支是go1.12.
Alt textgolang

二、切換到go1.4的分支
Alt textbash

三、進入source目錄,運行腳本開始編譯ui

~/open_src/go/src$ ./all.bash

四、以後能夠進bin目錄運行go查看版本 是否是1.4,來確認是否編譯成功。this

Alt text

  1. sudo cp go /usr/local/go1.4 -rp 拷貝一份到本地路徑
    這樣咱們就可使用go1.4編譯go1.12了。

編譯go1.12

一、回到go源碼目錄咱們切換到go1.12分支.
如今就直接進入src編譯是不行的,咱們須要先設置go1.4的路徑給GOROOT_BOOTSTRAP。code

./all.bash 
Building Go cmd/dist using /home/ailumiyana/go1.4.
ERROR: Cannot find /home/ailumiyana/go1.4/bin/go.
Set $GOROOT_BOOTSTRAP to a working Go tree >= Go 1.4.
ailumiyana@sola:~/open_src/go/src$ export GOROOT_BOOTSTRAP=/usr/local/go1.4

export GOROOT_BOOTSTRAP=/usr/local/go1.4blog

二、再次進入src目錄編譯
你可能會遇到 _Gidle redeclared in this block 錯誤
Alt textcmd

這是由於咱們的上次編譯的中間文件沒有清理的緣由.
Alt text

git clean -df

Alt text

三、最後編譯應該就沒問題了,

Alt text

交叉編譯

go的交叉編譯也比較簡便,go env能夠看到當前的環境變量配置,
GOOS、 GOARCH 分別表示目標機系統及處理器體系結構.
Alt text

GOOS=linux GOARCH=amd64 go build hello.go

Alt text

這些應該是可選搭配 :
Alt text

相關文章
相關標籤/搜索