回答

收藏

什么是go build

技术问答 技术问答 277 人阅读 | 0 人回复 | 2023-09-12

新的 Go 程序员通常不知道或混淆基本 go build 命令的作用。% R6 r& t0 ]2 r6 _% }) }4 P
go build和go install他们把结果/输出放在哪里?: ~+ k. Z0 b) p! ~
                                                               
' @" L1 q4 k2 Y+ s- z  t- [    解决方案:                                                               
5 f; R" @. d5 I. K" M% U                                                                什么go命令不取决于我们是否运行正常包或特殊包"main"包。
* H' ]/ |3 F4 b; j, K5 ?3 G对于包裹
4 |$ ?+ J* E6 m' [8 b2 Mgo build然后构建你的包丢弃结果。) m+ c2 g, e% f2 g+ S2 e* t2 b
go installbuilds 然后将软件包安装到您的$GOPATH/pkg目录中。
命令(包)main)
* ?9 ^+ v: T7 K# |* _* |go build建设命令和结果留在一起在目前的工作目录中。% ~2 h; _0 a+ S9 o$ Y1 f& l
go install在临时目录中构建命令,然后移动到$GOPATH/bin.
传递给go build什么?您可以将包传递给go build要建的包。你也可以传递.go单个目录的文件列表,然后视为指定单个包的源文件列表。1 _( j; @  G" o% g
未提供包(导入路径)的,构建将应用于当前目录。9 }4 Y/ \, H* c$ t1 z
一个导入路径可能包含一个或多个"..."通配符(在这种情况下,它是一个模式)。...例如,任何字符串都可以匹配,net/...匹配net包及其子文件夹中的任何包。
- M% v) l$ b4 Z7 w# R
    go build ./...! B/ K/ x3 e5 L
通常用于在当前文件夹中构建包,并将包交给所有包。在项目根目录中发出的命令将构建一个完整的项目。
+ y- P' J/ B& y& H更多关于指定包的信息,请操作go help packages.
) F% l; N3 g! `% @; z4 f* q/ e8 L关于模块Go 1.对 在11 中引入Go 模块的初步支持,从 Go 1.从13 开始,模块成为默认值。go从包含go.mod文件夹(或当前文件夹的父文件夹之一)go操作工具时,工具是模块感知模式运行(旧模式称为GOPATH 模式)。. x) E- |+ u- p/ b2 W* H7 F6 d9 m
在模块感知模式下,GOPATH 在构建过程中不再定义导入的含义,但它仍然存储下载的依赖项( GOPATH/pkg/mod 中)和安装命令( GOPATH/bin 中,除非设置了 GOBIN)。
' ^* C; r/ H* t1 g% }0 K. ~* p& \在构建模块时,构建的内容是由构建列表指定列表最初只包括主模块(包括)go运行命令目录中的模块),将主模块的依赖项递归并添加到构建列表中(也添加了依赖项的依赖项)。
3 q+ Y+ z& R" H2 A  @更多信息,请运行go help modules。# r+ g2 L* Z; l; S5 j- @: z
基本上,你可以用它go build检查包是否可以同时构建(与它们的依赖项相结合)go install还(永久)安装结果$GOPATH.9 Z5 r" J3 _- w# X3 j5 [9 j
go build 如果一切正常,默默终止,如果不能构建/编译包,会给你提供错误的信息。* z, V* R9 u5 b
每当该go工具安装包或二进制文件时,它也会安装它所具有的任何依赖项,因此运行go install还将自动安装您的程序所依赖的包(公开可用go gettable”包)。
1 r0 s2 j3 f) [; O您还可以通过操作以下命令获得更多帮助:
) W0 X% ^# x6 E5 X1 ~# F
    go help build
    6 J1 r  A7 \2 u
值得注意的是,从 Go 1.5 开始,go install还删除了由go build( source )创建的可执行文件:
) }% `% V8 |9 E' T/ ]/ \% R如果“go install(无参数,表示当前目录)成功,删除go build可执行文件(如果存在)。这样可以避免留下旧的二进制文件......
2 w3 d3 D) G  h+ ^* r+ A完成列表,go run请将您的应用程序编译成临时文件夹,然后启动可执行的二进制文件。当应用程序退出时,它将正确清理临时文件。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则