回答

收藏

什么是go build

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

新的 Go 程序员通常不知道或混淆基本 go build 命令的作用。. M" c0 @* L+ ]. k. ^  y
go build和go install他们把结果/输出放在哪里?3 g% ]' B. X# X; }
                                                               
8 ~9 O( {* q; g  V7 P/ G5 P2 n    解决方案:                                                                1 [! t4 |. H% P' M/ A
                                                                什么go命令不取决于我们是否运行正常包或特殊包"main"包。) |" Q' E6 \0 _% j! v- h  @; u
对于包裹6 k8 S6 U; E3 R3 u* H
go build然后构建你的包丢弃结果。; G4 X' R4 F8 U8 r' {) z- d* \9 ]
go installbuilds 然后将软件包安装到您的$GOPATH/pkg目录中。
命令(包)main)
6 G) d- I  D% `5 d/ |go build建设命令和结果留在一起在目前的工作目录中。
6 q0 ?: F0 L; z. m/ p" z  |go install在临时目录中构建命令,然后移动到$GOPATH/bin.
传递给go build什么?您可以将包传递给go build要建的包。你也可以传递.go单个目录的文件列表,然后视为指定单个包的源文件列表。; I% K2 v. U% m* r) ^/ m
未提供包(导入路径)的,构建将应用于当前目录。+ _7 N' e2 `# v/ ?: r$ A
一个导入路径可能包含一个或多个"..."通配符(在这种情况下,它是一个模式)。...例如,任何字符串都可以匹配,net/...匹配net包及其子文件夹中的任何包。
7 [7 K* r) z8 y6 U
    go build ./...
    5 `" s2 r  T" K  |0 T8 K
通常用于在当前文件夹中构建包,并将包交给所有包。在项目根目录中发出的命令将构建一个完整的项目。
* c. E. X) V2 d% E  O更多关于指定包的信息,请操作go help packages.
3 m" \; V  i: Q. W; R$ _关于模块Go 1.对 在11 中引入Go 模块的初步支持,从 Go 1.从13 开始,模块成为默认值。go从包含go.mod文件夹(或当前文件夹的父文件夹之一)go操作工具时,工具是模块感知模式运行(旧模式称为GOPATH 模式)。
5 I6 s3 Y* {) i- U- @在模块感知模式下,GOPATH 在构建过程中不再定义导入的含义,但它仍然存储下载的依赖项( GOPATH/pkg/mod 中)和安装命令( GOPATH/bin 中,除非设置了 GOBIN)。9 y! j! ]0 ^  a6 ]: X
在构建模块时,构建的内容是由构建列表指定列表最初只包括主模块(包括)go运行命令目录中的模块),将主模块的依赖项递归并添加到构建列表中(也添加了依赖项的依赖项)。
8 {9 N8 q- b+ e, ?- w! V更多信息,请运行go help modules。& i. u& [. g% R9 ^$ x9 m1 z
基本上,你可以用它go build检查包是否可以同时构建(与它们的依赖项相结合)go install还(永久)安装结果$GOPATH.
4 t+ [5 Y$ W2 N4 ego build 如果一切正常,默默终止,如果不能构建/编译包,会给你提供错误的信息。
% Q: U  u; V: P* u/ g7 F+ F( H每当该go工具安装包或二进制文件时,它也会安装它所具有的任何依赖项,因此运行go install还将自动安装您的程序所依赖的包(公开可用go gettable”包)。; O1 N3 d0 ]  T( b% u+ O$ u
您还可以通过操作以下命令获得更多帮助:7 o& W/ v. w4 q6 N/ T
    go help build
    ' ^' o" B( I7 B$ d/ ^7 K4 n: ^5 }
值得注意的是,从 Go 1.5 开始,go install还删除了由go build( source )创建的可执行文件:
2 b9 W. S5 M: Z4 e如果“go install(无参数,表示当前目录)成功,删除go build可执行文件(如果存在)。这样可以避免留下旧的二进制文件......
! N; P7 ^+ Z: ?8 p! G7 @6 i9 }完成列表,go run请将您的应用程序编译成临时文件夹,然后启动可执行的二进制文件。当应用程序退出时,它将正确清理临时文件。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则