go install
命令
go install
用于编译并安装指定的代码包及它们的依赖包- 这个命令在内部实际上分成了两步操作:第一步是生成结果文件(可执行文件或
.a
包),第二步会把编译好的结果移到指定目录($GOPATH/bin
或$GOPATH/pkg
)go install
命令只比go build
命令多做了一件事,即安装编译后的结果文件到指定目录
go install
命令可以接受所有可用于go build
命令的参数
安装代码包
go install
命令会把编译后的可执行文件保存在源码文件所在工作区的 bin 目录下,包保存在 pkg 目录- 如果
go install
命令后跟的代码包中仅包含库源码文件,那么go install
命令会把编译后的结果文件保存在源码文件所在工作区的 pkg 目录下。结果文件是对应的代码包归档文件(也叫静态链接库文件,名称以 .a 结尾)go build
命令对仅包含库源码文件的代码包进行编译时,不会在当前工作区的 src 以及 pkg 目录下产生任何结果文件。结果文件会出于编译目的被生成在临时目录,但并不会使当前工作区目录产生任何变化。只会留下可执行文件。go build -i
可将包安装在独立于构建目标的地方
go install
命令时不后跟任何代码包参数,那么命令将试图编译当前目录所对应的代码包
安装命令源码文件
go install 的参数
参数 | 描述 |
---|---|
-d | 只下载不安装 |
-f | 只有在包含 -u 参数时才有效,不让 -u 去验证 import 中的每一个都已经获取了,这对于本地 fork 的包特别有用 |
-fix | 在获取源码之后先运行 fix,而后再进行编译和安装 |
-insecure | 允许使用非安全的 scheme(如HTTP)去下载指定的代码包。如果代码仓库(如公司内部的Gitlab)没有 HTTPS 支持,可以添加此标记。请在确定安全的情况下使用它 |
-t | 下载并安装指定的代码包中的测试源码文件中依赖的代码包 |
-u | 强制使用网络更新已有代码包及其依赖包。默认情况该命令只会从网络上下载本地不存在的代码包,而不会更新已有的代码包 |
-v | 显示执行的命令 |