回答

收藏

什么是go build

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

新的 Go 程序员通常不知道或混淆基本 go build 命令的作用。
: x5 _7 f  @/ X2 W) y8 ?% Y) fgo build和go install他们把结果/输出放在哪里?. I3 i+ m; y- B  q- O2 f
                                                                5 N4 Z$ i1 |0 H  j, \
    解决方案:                                                                6 a2 F0 m7 O3 b  X
                                                                什么go命令不取决于我们是否运行正常包或特殊包"main"包。2 v% a: W) }, r# w( I
对于包裹/ T' H9 T; k) C1 N
go build然后构建你的包丢弃结果。1 O8 n% ?# R- s! K: }. ]) p
go installbuilds 然后将软件包安装到您的$GOPATH/pkg目录中。
命令(包)main)1 e! e/ _9 W" u; k! y5 t
go build建设命令和结果留在一起在目前的工作目录中。
3 i, O# i. w# x- f5 ego install在临时目录中构建命令,然后移动到$GOPATH/bin.
传递给go build什么?您可以将包传递给go build要建的包。你也可以传递.go单个目录的文件列表,然后视为指定单个包的源文件列表。
% |4 y4 a, D: o( Z' \未提供包(导入路径)的,构建将应用于当前目录。! i9 v" y  ~( m4 |) r9 P
一个导入路径可能包含一个或多个"..."通配符(在这种情况下,它是一个模式)。...例如,任何字符串都可以匹配,net/...匹配net包及其子文件夹中的任何包。
& ^4 b9 W8 }" y! H6 E9 N
    go build ./...
    & m. S$ n$ ?5 i6 Z  z1 f" S* E
通常用于在当前文件夹中构建包,并将包交给所有包。在项目根目录中发出的命令将构建一个完整的项目。
: v; V/ r& J9 q$ h6 |( w6 _更多关于指定包的信息,请操作go help packages.: A  _4 B" @& {* p
关于模块Go 1.对 在11 中引入Go 模块的初步支持,从 Go 1.从13 开始,模块成为默认值。go从包含go.mod文件夹(或当前文件夹的父文件夹之一)go操作工具时,工具是模块感知模式运行(旧模式称为GOPATH 模式)。
9 h4 |2 x5 t9 C: L; L在模块感知模式下,GOPATH 在构建过程中不再定义导入的含义,但它仍然存储下载的依赖项( GOPATH/pkg/mod 中)和安装命令( GOPATH/bin 中,除非设置了 GOBIN)。7 t+ O% M: h1 M: K3 ?+ `, m% d
在构建模块时,构建的内容是由构建列表指定列表最初只包括主模块(包括)go运行命令目录中的模块),将主模块的依赖项递归并添加到构建列表中(也添加了依赖项的依赖项)。) }0 H( b% k* @  K- A/ T( n
更多信息,请运行go help modules。! \% `, Y. V0 Q& p/ ^( b
基本上,你可以用它go build检查包是否可以同时构建(与它们的依赖项相结合)go install还(永久)安装结果$GOPATH.8 K. J/ T$ b& _6 B9 M: q! J6 X
go build 如果一切正常,默默终止,如果不能构建/编译包,会给你提供错误的信息。5 m. H9 z! y6 h' w" q- c! N
每当该go工具安装包或二进制文件时,它也会安装它所具有的任何依赖项,因此运行go install还将自动安装您的程序所依赖的包(公开可用go gettable”包)。1 x3 a! s9 V! ^; N1 }6 V$ ~
您还可以通过操作以下命令获得更多帮助:. }) v& h9 d, b/ j& R
    go help build
    $ o0 ?; y+ c! h+ y+ s/ d, H
值得注意的是,从 Go 1.5 开始,go install还删除了由go build( source )创建的可执行文件:
. |/ M  o; D7 P  Z如果“go install(无参数,表示当前目录)成功,删除go build可执行文件(如果存在)。这样可以避免留下旧的二进制文件......
4 I  A& p( g5 o! \; F% z完成列表,go run请将您的应用程序编译成临时文件夹,然后启动可执行的二进制文件。当应用程序退出时,它将正确清理临时文件。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则