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



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

編譯源代碼

golang編譯其實很簡單,下載一份最新的源代碼后,進入src目錄運行all.bash即可,
但是你可能會遇到下面問題,這是因為現在golang都是用go語言編譯的了,所以你的系統必須先安裝好 >= go1.4 的版本.

./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

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

然后進入目錄,查看全部分支。
可以看到當前最新的release分支是go1.12.
Alt text

2、切換到go1.4的分支
Alt text

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

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

4、之后可以進bin目錄運行go查看版本 是不是1.4,來確認是否編譯成功。

Alt text

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

編譯go1.12

1、回到go源碼目錄我們切換到go1.12分支.
現在就直接進入src編譯是不行的,我們需要先設置go1.4的路徑給GOROOT_BOOTSTRAP。

./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.4

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

這是因為我們的上次編譯的中間文件沒有清理的原因.
Alt text

git clean -df

Alt text

3、最后編譯應該就沒問題了,

Alt text

交叉編譯

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

GOOS=linux GOARCH=amd64 go build hello.go

Alt text

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


免責聲明!

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



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