构建构建是什么?
回答
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构建了什么
似乎很奇怪,安装不会更新可执行文件,如果它与以前安装的可执行文件相同...任何见解? –