go build和go install的区别介绍

go build:

go build 用于编译包生成可执行文件,必须有main包才可以

go install:

go install 的作用有两个:主要用来生成库和工具,(如果有main包)编译后生成的可执行工具文件放到 bin 目录、$GOPATH/bin,编译后的库文件放到 pkg 目录下($GOPATH/pkg)

补充:go build 命令

简介

1、用于编译源码文件或代码包

-编译非命令源码文件不会产生任何结果文件

-编译命令源码文件会在该命令的执行目录中生成一个可执行文件

2、执行该命令且以若干源码文件作为参数时,只有这些文件会被编译

-注意列出代码运行所需的全部源码文件,否则可能产生编译错误

3、执行该命令且不追加任何参数时,它会试图把当前目录作为代码包并编译

4、执行该命令且以代码包的导入路径作为参数时,该代码包及其依赖会被编译

-加入-a标记后所有涉及到的代码包都会被重新编译

-不加入-a标记,则只会编译归档文件中不是最新的代码包

使用

编译源码文件:go build [fileName].go

编译代码包:go build [代码包的导入路径]

常见标记

标记 描述
-o 指定输出文件。
-a 强行对所有涉及到的代码包(包括标准库中的代码包)进行重新构建,即使它们已经是最新的了。
-n 打印构建期间所用到的其它命令,但是并不真正执行它们。
-p n 构建的并行数量(n)。默认情况下并行数量与CPU数量相同。
-race 开启数据竞争检测。此标记目前仅在linux/amd64、darwin/amd64和windows/amd64平台下被支持。
-v 打印出被构建的代码包的名字。
-work 打印出临时工作目录的名字,并且取消在构建完成后对它的删除操作。
-x 打印出构建期间所用到的其它命令。

例如:

go build -a [代码包的导入路径]

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。

(0)

相关推荐

  • go install/build生成的文件命名和路径操作

    1. 写在前面 本文主要讨论go install/build命令生成的文件命令和生成路径问题.将从两种情况讨论: 文件夹下只有一个"命令源码文件" 文件夹下既有命令源码文件还有其他源码文件 以下实验主要在windows环境下完成呢,所以生成的可执行文件以.exe后缀结尾 2. 文件夹下只有一个"命令源码文件" 假设一个简单的命令源码文件所在的工程组织如下所示: |__ src     |__ jeekTimeProject         |__ test     

  • 基于pip install django失败时的解决方法

    使用pip安装Django时报错,先是: C:\Users\admin>pip install django Collecting django Retrying (Retry(total=4, connect=None, read=None, redirect=None)) after connection broken by 'ReadTimeoutError("HTTPSConnectionPool(host='pypi.python.org', port=443): Read ti

  • golang 格式化输入输出操作

    格式化字符串由占位符和普通字符组合而成. 占位符由'%'打头,动词结尾. 占位符由五类元素组成: 标志位(flag),宽度,精度,参数索引,以及动词. 除了最后的动词之外,其他元素均可省略. 看下面的常用类型的例子描述: 缺省格式和类型 Value: []int64{0, 1} 格式化后的效果 动词 描述 [0 1] %v 缺省格式 []int64{0, 1} %#v go语法打印 []int64 %T 类型打印 整型(缩进, 进制类型, 正负符号) Value: 15 格式化后的效果 动词 描

  • golang 限制同一时间的并发量操作

    go的并发量是很厉害的,goroutine创建的代价极小,其中一个重要的原因是因为go采用了分段栈技术,每一个goroutine只占极小的空间.与此同时,goroutine是语言层面的,减少了内核态到用户态的切换开销,并且goroutine摒弃了一些golang用不到的一些os thread的系统调用,创建代价小. 我们可以一瞬间创建很多个goroutine,这是相当容易的. 乍一看,这与题目完全不符,前面说了那么多,难道不是鼓励我们多创建goroutine吗?不不不,goroutine确实很好

  • golang网络通信超时设置方式

    网络通信中,为了防止长时间无响应的情况,经常会用到网络连接超时.读写超时的设置. 本文结合例子简介golang的连接超时和读写超时设置. 1.超时设置 1.1 连接超时 func DialTimeout(network, address string, timeout time.Duration) (Conn, error) 第三个参数timeout可以用来设置连接超时设置. 如果超过timeout的指定的时间,连接没有完成,会返回超时错误. 1.2 读写超时 在Conn定义中,包括读写的超时时

  • go build和go install的区别介绍

    go build: go build 用于编译包生成可执行文件,必须有main包才可以 go install: go install 的作用有两个:主要用来生成库和工具,(如果有main包)编译后生成的可执行工具文件放到 bin 目录.$GOPATH/bin,编译后的库文件放到 pkg 目录下($GOPATH/pkg) 补充:go build 命令 简介 1.用于编译源码文件或代码包 -编译非命令源码文件不会产生任何结果文件 -编译命令源码文件会在该命令的执行目录中生成一个可执行文件 2.执行该

  • 关于vue的npm run dev和npm run build的区别介绍

    关于vue的npm run dev和npm run build的区别介绍,下面就分享给大家,具体如下: ├─build │ ├─build.js │ ├─check-versions.js │ ├─dev-client.js │ ├─dev-server.js │ ├─utils.js │ ├─vue-loader.conf.js │ ├─webpack.base.conf.js │ ├─webpack.dev.conf.js │ ├─webpack.prod.conf.js │ └─webpa

  • MyBatis中关于resultType和resultMap的区别介绍

    MyBatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMap,resultType是直接表示返回类型的(对应着我们的model对象中的实体),而resultMap则是对外部ResultMap的引用(提前定义了db和model之间的隐射key-->value关系),但是resultType跟resultMap不能同时存在. 在MyBatis进行查询映射时,其实查询出来的每一个属性都是放在一个对应的Map里面的,其中键是属性名,值则是其对应的值.

  • tensorflow2.0与tensorflow1.0的性能区别介绍

    从某种意义讲,tensorflow这个项目已经失败了,要不了几年以后,江湖上再无tensorflow 因为tensorflow2.0 和tensorflow1.0 从本质上讲就是两个项目,1.0的静态图有他的优势,比如性能方面,但是debug不方便,2.0的动态图就是在模仿pytorch,但是画虎不成反类犬. 为了对比1.0 与2.0 1. pip install tensorflow==2.0.0a0 2. 为了控制变量我把mnist保存到本地的mongodb 3. 两种网络结构是一样的 ip

  • 正则表达式中test、exec、match的区别介绍及括号的用法

    test.exec.match的简单区别 1.test test 返回 Boolean,查找对应的字符串中是否存在模式. var str = "1a1b1c"; var reg = new RegExp("1.", ""); alert(reg.test(str)); // true 2.exec exec 查找并返回当前的匹配结果,并以数组的形式返回. var str = "1a1b1c"; var reg = new Re

  • oracle中存储函数与存储过程的区别介绍

    在oracle中,函数和存储过程是经常使用到的,他们的语法中有很多相似的地方,可是也有它们的不同之处,这段时间刚学完函数与存储过程,来给自己做一个总结: 一:存储过程:简单来说就是有名字的pl/sql块. 语法结构: create or replace 存储过程名(参数列表) is --定义变量 begin --pl/sql end; 案例: create or replace procedure add_(a int,b int) is c int; begin c:=a+b; dbms_ou

  • Oracle、MySQL和SqlServe三种数据库分页查询语句的区别介绍

    先来定义分页语句将要用到的几个参数: int currentPage ; //当前页 int pageRecord ; //每页显示记录数 以之前的ADDRESSBOOK数据表为例(每页显示10条记录): 一.SqlServe下载 分页语句 String sql = "select top "+pageRecord +" * from addressbook where id not in (select top "+(currentPage-)*pageRecor

  • vue学习笔记之vue1.0和vue2.0的区别介绍

    今天我们来说一说vue1.0和vue2.0的主要变化有哪些 一.在每个组件模板,不在支持片段代码 VUE1.0是: <template> <h3>我是组件</h3><strong>我是加粗标签</strong> </template> VUE2.0:必须有根元素,包裹住所有的代码 <template id="aaa"> <div> <h3>我是组件</h3> <

  • javascript函数命名的三种方式及区别介绍

    javascript函数命名的三种方式及区别介绍 第一 复制代码 代码如下: function fn(val1,val2) { alert(val1+val2); } fn(1,2); 第二 复制代码 代码如下: var fn=function() { alert(val1+val2); } fn(1,2); 第三 复制代码 代码如下: var fn=new Function("alert(val1+val2)"); fn(1,2); 上面三种方式逻辑上是等价的,但是还是有点小区别:区

  • apache伪静态与iis伪静态规则与配置区别介绍

    本文章来总结一下关于apache伪静态与iis伪静态区别介绍,主要讲到了一些规则的问题与配置区别,以后大家就可以直接在iis伪静态转换apache,反之也很简单哦. 在我开时打开模式不一样:apache的.htaccess配置文件是以:RewriteEngine On 将写模式打开.Apache伪静态html(URL Rewrite)设置法phpma一 打开 Apache 的配置文件 httpd.conf .phpma二 将#LoadModule rewrite_module modules/m

随机推荐