15.go install
1.go install命令go install用于编译并安装指定的代码包及它们的依赖包。当指定的代码包的依赖包还没有被编译和安装时,该命令会先去处理依赖包实际上,go install命令只比go build命令多做了一件事,即:安装编译后的结果文件到指定目录。安装代码包会在当前工作区的 pkg/<平台相关> 下生成归档文件安装命令源码文件会在当前工作区的 bin 目录或 $GOBIN 目录下生成可执行文件执行该命令且不追加任何参数时,它会视图把当前目录作为代码包并安装执行该命令且以代码包的导入路径作为参数时,该代码包及其依赖会被安装执行该命令且以命令源码文件及相关库源码文件作为参数时,只有这些文件会被编译安装go install 库源码文件那么go install命令会把编译后的结果文件保存在源码文件所在工作区的pkg目录下,这个结果文件就是对应的代码包归档文件(也叫静态链接库文件,名称以.a结尾).相比之下,我们在使用go build命令对仅包含库源码文件的代码包进行编译时,是不会在当前工作区的src目录以及pkg目录下产生任何结果文件的。结果文件会出于编译的目的被生成在临时目录中,但并不会使当前工作区目录产生任何变化。go install 如果我们在执行go install命令时不后跟任何代码包参数,那么命令将试图编译当前目录所对应的代码包执行go install命令后会对指定代码包先编译再安装。其中,编译代码包使用了与go build命令相同的程序。所以,执行go install命令后也会首先建立一个名称以go-build为前缀的临时目录。如果我们想强行重新安装指定代码包及其依赖包,那么就需要加入标记-a还有一个问题:上述的安装过程涉及到了那么多代码包,那为什么goc2p项目的pkg目录中只包含该项目中代码包的归档文件呢?实际上,go install命令会把标准库中的代码包的归档文件存放到Go语言安装目录的pkg子目录中,而把指定代码包依赖的第三方项目的代码包的归档文件存放到当前工作区的pkg目录下。这样就实现了Go语言标准库代码包的归档文件与用户代码包的归档文件,以及处在不同工作区的用户代码包的归档文件之间的分离在环境变量GOPATH中包含多个工作区目录路径时,我们需要在编译命令源码文件前先对环境变量GOBIN进行设置。实际上,这个环境变量所指的目录路径就是命令程序生成的结果文件的存放目录。go install命令会把相应的可执行文件放置到这个目录中由于命令go build在编译库源码文件后不会产生任何结果文件,所以自然也不用会在意结果文件的存放目录。在该命令编译单一的命令源码文件或者包含一个命令源码文件和多个库源码文件时,在结果文件存放目录无效的情况下会将结果文件(也就是可执行文件)存放到执行该命令时所在的目录下。因此,即使环境变量GOBIN的值无效,我们在执行go build命令时也不会见到这个错误提示信息。然而,go install命令中一个很重要的步骤就是将结果文件(归档文件或者可执行文件)存放到相应的目录中。所以,go install命令在安装命令源码文件时,如果环境变量GOBIN的值无效,则它会在最后检查结果文件存放目录的时候发现这一问题,并打印与上述示例所示内容类似的错误提示信息,最后直接退出。
https://github.com/hyper0x/go_command_tutorial/blob/71833ffcab991a2931d3106490d96008f45c3177/0.2.md
15.go install相关推荐
- SUSE Linux Enterprise Server 15 SP3 Install
suse 前言 SUSE®Linux Enterprise 15服务器是一个模块化的操作系统,为软件定义时代的IT转型铺平了道路. 现代和模块化的操作系统有助于简化您的IT环境,现代化您的IT基础设施 ...
- CentOS7 编译安装LVS 互为主备 (实测 笔记 Centos 7.0 + ipvsadm 1.27 + keepalived 1.2.15 )
环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G,双网卡) LVS服务器(两台): 系统:Centos7.0 64位(LVS+keepalived) LvsMaster:1 ...
- 一句话满速下载清华源3.4.1.15版本的opencv和contrib库
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-python==3.4.1.15 pip install -i https ...
- 1660 super安装tensorflow1.15
1.查看NVIDIA版本信息 其实这里的cuda版本和安装的tensorflow无关!!! 2.查看对应显卡支持的cuda+cudnn 3.经过长期的试错,得出结论.1660 super安装cuda1 ...
- Gerrit代码审计系统实战-Gerrit 2.15.14版本快速搭建
Gerrit代码审计系统实战-Gerrit 2.15.14版本快速搭建 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Gerrit版本选择 1>.查看Gerrit官网 ...
- Apache Kudu 1.15.0的分布式集群部署
目录 1. 部署规划 2. 部署要求 2.1 硬件要求 2.2 软件要求 2.3 安装依赖 3. 从源码编译(kudu1上操作) 3.1 安装Red Hat Developer Toolset 3.2 ...
- docker 镜像容器导入导出、查看日志、拷贝文件命令
1. 本地文件拷贝到docker 容器中,参考 docker cp /root/pcl-pcl-1.8.1.tar.gz 7ff95b333e12:/docker cp /root/lib64_a 7 ...
- 升级SUSE Linux内核的完整步骤!
http://blog.sina.com.cn/s/blog_491529d60100061h.html 安装完SLED 10后发现仍然有"热启动网络不通"的问题,原因是内核版本较 ...
- centos环境自动化批量安装软件脚本
自动化安装jdk软件部署脚本 准备工作: 1.在执行脚本的服务器上生成免密码公钥: 安装expect命令 yum install -y expect ssh-keygen 三次回车 2.将jdk-7u ...
- centos7升级自带的php5.4版本到php5.6
[转载] https://www.cnblogs.com/biaopei/p/7730464.html history命令历史8 yum provides php #自带的只有5.4版本9 rpm - ...
最新文章
- IPv6 — Multi-homing(多宿主/多链路/多归属)
- 012_Comparable和Comparator实例
- 多图指南——微信小程序设计规范
- Cheapest Palindrome POJ - 3280(动态规划*)
- HTML/CSS 知识点
- 成功加入微软GDI计划
- C++ string的大小写转换
- AutoLISP圆内接多边形
- 最近发现一个小生意非常不错
- python | while循环与for循环 | 循环嵌套 | pass通用类型,循环整体结束或开始下一轮循环
- Android系统信息获取 之十四:获取WIFI热点相关信息
- Ffplay视频播放流程
- mac m1 eclipse汉化操作
- Java性能调优的11个实用技巧
- donet编译原理(C#)
- 在CSDN持续写博客半年之后,我的薪资涨了45%
- 图片边框border-image
- 推荐的这22个高频 CLI 工具,确定不收藏吗?
- 【SCIR笔记】Transformer及其变种
- java.lang.NoClassDefFoundError: org/apache/commons/pool2/PooledObjectFactory