溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何編譯go及實現(xiàn)go get進度顯示

發(fā)布時間:2021-12-08 11:47:49 來源:億速云 閱讀:375 作者:小新 欄目:云計算

這篇文章主要介紹如何編譯go及實現(xiàn)go get進度顯示,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

一、首先附上編譯完成能顯示go get進度的Go包:

centos7直接解壓版go:http://pan.baidu.com/s/1mik3cI8

windows7直接解壓版go:http://pan.baidu.com/s/1jIaxKEE

一、編譯之前修改go get進度顯示:

因為beego在github.com上的包有點大, 所以 go get github.com/leanote/leanote/app 會很慢, 這個會執(zhí)行幾分鐘或更長, 不知道的朋友還以為卡死了. 找了下 go get 沒有一個選項可以輸出進度的, 于是決定修改golang源碼(別以為很有技術含量, 還不是go代碼?).

看了下golang的源碼 src/cmd/go 下是go命令的源碼, 其中, get.go是go get命令的代碼, build.go 是go build的代碼.

剛開始走了點彎路, 想著改變get.go來顯示進度, 無果之后想了下, go get 其實就是調用git , hg, svn的命令從倉庫中下載的, 由此思路找到vcs.go(vcs全稱為version control system), 果然這里面包含了調用git, hg, svn的命令. 問題迎刃而解:

  1. 修改git clone命令, 添加 --progress選項, 使其輸出進度

  2. 修改cmd.Run()執(zhí)行的地方, 使其將輸出定位到標準輸出流上

1. 修改git clone命令, 找到如下代碼, 在createdCmd修改為 clone --progress {repo} {dir}

其它命令hg, svn...添加進度方法類似

// vcsGit describes how to use Git.var vcsGit = &vcsCmd{
	name: "Git",
	cmd:  "git",

	createCmd:   "clone {repo} {dir}", // 此處修改為 clone --progress {repo} {dir}
	downloadCmd: "pull --ff-only"}

2. 重定向輸出流

找到run1()方法, 在 cmd.Stderr = &buf 下添加兩行, 如:

var buf bytes.Buffer
	cmd.Stdout = &buf
	cmd.Stderr = &buf
	cmd.Stdout = os.Stdout // 重定向標準輸出
	cmd.Stderr = os.Stderr // 重定向標準輸出
	err = cmd.Run()

Ok, 搞定, 接下來執(zhí)行golang源碼 src下的 all.bash 重新編譯golang, 編譯要些時間, 編譯完后使用go get 試試:

如何編譯go及實現(xiàn)go get進度顯示

看到進度條就不用擔心了吧.

之前修改golang源碼使其關閉變量未使用, 包未使用的錯誤 : 

關閉golang的 variable declared but not used 和 package imported but not used

二:window7下面編譯Go:

如何編譯go及實現(xiàn)go get進度顯示

復制一份go源碼:

如何編譯go及實現(xiàn)go get進度顯示

設置GOROOT_BOOTSTRAP=C:\Go1.7

如何編譯go及實現(xiàn)go get進度顯示

環(huán)境變量設置完畢需要重啟生效?。。?/p>

如何編譯go及實現(xiàn)go get進度顯示

如何編譯go及實現(xiàn)go get進度顯示

下載安裝:MinGW - Minimalist GNU for Windows

https://sourceforge.net/projects/mingw/

如何編譯go及實現(xiàn)go get進度顯示

如何編譯go及實現(xiàn)go get進度顯示

也可以直接下載TDM-GCC MinGW Compiler

如何編譯go及實現(xiàn)go get進度顯示

如何編譯go及實現(xiàn)go get進度顯示

添加到path中:

set PATH=.;C:\TDM-GCC-64\bin\

如何編譯go及實現(xiàn)go get進度顯示

如何編譯go及實現(xiàn)go get進度顯示

三:Centos7下面編譯Go:

linux同理,執(zhí)行編譯腳本為src下的sh all.bash

如何編譯go及實現(xiàn)go get進度顯示

編譯完畢,執(zhí)行go get:

如何編譯go及實現(xiàn)go get進度顯示

以上是“如何編譯go及實現(xiàn)go get進度顯示”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。

go
AI