[學習筆記]Goland項目編譯及調試

來源:互聯網
上載者:User

用Goland在調試go-ethereum源碼時遇到一些問題,在大神的指導下把Goland給搞定了,在此整理一下,希望能協助到初學者。

在學習golang時,把書本上的代碼敲一遍跑一邊沒問題,因為都是單個檔案運行。但是真正用go去跑項目時就出問題了,因此要從根本上理解問題。

MinGW

在對項目進行編譯時間,發生報錯:

編譯報錯因此重新下載安裝了MinGW,安裝完成後設定Path,運行 gcc- v,能列印版本表示已安裝成功。

GOROOT和GOPATH

GOROOT 的目的是設定go的安裝位置,編譯時間從GOROOT去找SDK的system library。如果不設定,會從預設位置擷取。

GOPATH 的目的是設定代碼路徑 ,需要代碼時從該路徑尋找。此處程式碼封裝括了 本項目代碼 和 引用外部項目的 依賴包 代碼。GOPATH可以隨著項目的不同而重新設定。

GOPATH 必須 有以下三個目錄:

  • src:存放原始碼的目錄,比如 .go ,.h,.c
  • pkg:編譯後產生的檔案,比如 .a 檔案,go install後會在該目錄產生一個 .a 檔案。
  • bin:編譯後產生的可執行檔。

Go編譯時間會從$GOPATH/src 目錄尋找需要的代碼。
當項目需要依賴外部依賴包,go直接通過GOPATH進行管理。go允許import不同程式碼程式庫的代碼,比如 github.com,對於需要 import 的代碼,可以使用 go get 命令取下來存放到GOPATH對應的目錄中去,比如 $GOPATH/src/github.com下。

因此,對於go來說,並不關心代碼是內部的還是外部的,都是從GOPATH擷取,任何需要import的包路徑都從GOPATH開始。唯一的區別就是,內部依賴的包是項目開發人員自己寫的,外部依賴包是通過 go get 下來的。

Vendor

vendor屬性讓go編譯時間,優先從項目源碼樹根目錄下的vendor目錄尋找代碼(可以理解為切換了一次GOPATH),如果vendor中有,則不再去GOPATH中找。
因此,要把項目所有的依賴包都拷貝到vendor目錄。使用包版本管理工具來處理這些事情,go官方的 dep 以及非官方的 glide 等。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.