構建構建是什麼?
回答
go
命令的作用取決於我們是將其運行於「普通」軟件包還是特殊的"main"
軟件包。
對於包
go build
建立你的包,那麼丟棄結果。go install
builds然後安裝該包在您的$GOPATH/pkg
目錄中。
對於命令(包main
)
go build
構建命令並離開結果在當前工作目錄。go install
在臨時目錄中生成命令,然後將其移至$GOPATH/bin
。
基本上你可以使用go build
作爲檢查該包可建(連同它們的依賴),同時也go install
(永久)安裝在您的$GOPATH
的正確文件夾中的結果。
go build
將靜靜地終止,如果一切正常,並會給你錯誤消息,如果包不能建立/編譯。
每當go
工具安裝包或二進制文件,也安裝任何依賴它,所以運行go install
還將安裝軟件包程序取決於(公之於衆,「去gettable」包),自動。
首先,請閱讀官方How to Write Go Code頁面。有關go
工具
的更多信息:Command go
您還可以通過運行以下命令獲得更多的幫助:
go help build
還值得一提的是,開始進入1.5 go install
還刪除創建可執行文件通過go build
(source):
如果'去安裝'(沒有參數,意味着當前目錄) 成功,請刪除由'go build'編寫的可執行文件(如果存在)。這避免了遺留一個陳舊的二進制文件......
要完成該列表,go run
將您的應用程序編譯到一個臨時文件夾中,並啓動該可執行二進制文件。當應用程序存在時,它會正確清理臨時文件。
問題由Dave切尼的What does go build build?
激發了包:
go build
:建立你的包,那麼丟棄結果
轉到後這不會是真的1.10(Q1 2018),感謝CL 68116和CL 75473。見this thread,我在這裏引用。
什麼完全
go build
和go install
命令建立每當去工具安裝包或二進制文件,也安裝有任何依賴性,因此運行去安裝也將安裝軟件包你程序依賴於(公開可用,「去獲取」包),自動。
其實... go install
將在新的緩存另外與圍棋1.10,也隨之變化:
的 「
go install
」 命令不再安裝命名包的依賴(CL 75850 )。如果您運行「
go install foo
」,則唯一安裝的是foo
。之前,它有所不同。如果依賴關係過時,「
go install
」也安裝了任何依賴項。
在「go install
」期間隱式安裝依賴關係給用戶造成了很多困惑和麻煩,但之前需要啓用增量構建。
不再。
我們認爲新的「install what I said
」語義會更容易理解,特別是因爲從錯誤報告中可以清楚地看到許多用戶已經預料到它們。
要強制安裝依賴的過程中「go install
」,用「go build -i
」和「go test -i
」使用新的「go install -i
」,觸類旁通。其用於安裝任何重修依賴性「
go install
」結合引起混亂最常與-a
,這意味着「force rebuild of all dependencies
」事實。
現在,「go install -a myprog
」將強制完全重建所有依賴關係myprog
以及myprog
本身,但只會安裝myprog
。(當然,所有重建的依賴關係仍然會保存在構建緩存中)。
使這個案例更容易理解對於結合基於內容的新過時分析特別重要,因爲它看到了更經常重建依賴關係的充分理由比以前,這會增加「爲什麼我的依賴安裝」的混亂。例如,如果運行「go install -gcflags=-N myprog
」,則安裝不帶編譯器優化構建的myprog
,但它不再從沒有編譯器優化的標準庫中重新安裝包的使用myprog
。
- 1. 什麼是PHPCI - 什麼是構建?
- 2. 什麼是「dogfood」構建?
- 3. 什麼是詳細構建
- 4. 什麼是JSF構建?
- 5. 在Solr中,爲什麼「構建」不是被阻止「構建」,而是「構建」?
- 6. EEAP構建什麼?
- 7. 什麼是構建數據庫的最佳構建系統?
- 8. 構建和構建OCaml項目的首選方式是什麼?
- 9. 什麼是掛鐘Maven構建
- 10. 什麼是Grails構建配置Transitive = false
- 11. 什麼是構建和安裝?
- 12. 什麼是快照構建/源版本?
- 13. 「構建」程序的含義是什麼
- 14. Eclipse RCP - 什麼是無頭構建?
- 15. 爲什麼gradle在構建
- 16. 爲什麼TFS構建在構建代理上連續運行?爲什麼不平行構建?
- 17. 構建obj和exe文件的最佳dir結構是什麼?
- 18. 構建類層次結構的最佳方法是什麼?
- 19. 什麼是構建MySQL查詢的結構化方式?
- 20. 爲什麼我在構建python時無法構建sqlite3?
- 21. 構建我的xcode項目時構建了什麼目標
- 22. 爲什麼Debug構建失敗而Release構建成功?
- 23. 構建在buildbot中發生了什麼?可以buildmaster構建?
- 24. 在Eclipse中Maven構建和Maven構建...有什麼區別?
- 25. Eclipse m2eclipse clean,構建項目,自動構建命令,它們是什麼?
- 26. 爲什麼我們每次增加構建編號,即使是每晚構建?
- 27. 爲什麼不能動態構建mighttpd2?
- 28. 構建和部署有什麼區別?
- 29. 什麼框架構建離線webapp
- 30. Node.js爲Raspberry Pi構建了什麼
似乎很奇怪,安裝不會更新可執行文件,如果它與以前安裝的可執行文件相同...任何見解? –