go build和go install的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了go build和go install的区别相关的知识,希望对你有一定的参考价值。

go build:去建造,在数据库命令中,是建立一个新的数据构。

go install:去安装,在数据库命令中,是从其它数据源将数据库安装到本机上。


英语例句:Programmers starts the program and go build a new database.程序员启动程序,并且建立了一个新的数据库。

Programmers starts the program and go install a database from Internet.

程序员启动程序,并且从互联网安装下载了一个数据库。


修改建议

没有两个动词原形连用的语法。请注意区外并解惑。


你这是在打百度的脸吗?

参考技术A go install/build都是用来编译包和其依赖的包。
区别:
go build只对main包有效,在当前目录编译生成一个可执行的二进制文件(依赖包生成的静态库文件放在$GOPATH/pkg)。
go install一般生成静态库文件放在$GOPATH/pkg目录下,文件扩展名a,如果为main包,则会在$GOPATH/bin 生成一个可执行的二进制文件。

golang 终端go命令使用

查看可用命令

直接在终端中输入 go help 即可显示所有的 go 命令以及相应命令功能简介,主要有下面这些:

build: 编译包和依赖
clean: 移除对象文件
doc: 显示包或者符号的文档
env: 打印go的环境信息
bug: 启动错误报告
fix: 运行go tool fix
fmt: 运行gofmt进行格式化
generate: 从processing source生成go文件
get: 下载并安装包和依赖
install: 编译并安装包和依赖
list: 列出包
run: 编译并运行go程序
test: 运行测试
tool: 运行go提供的工具
version: 显示go的版本
vet: 运行go tool vet

命令的使用方式为: go command [args], 除此之外,可以使用go help <command>来显示指定命令的更多帮助信息。

在运行 go help 时,不仅仅打印了这些命令的基本信息,还给出了一些概念的帮助信息:

c: Go和c的相互调用
buildmode: 构建模式的描述
filetype: 文件类型
gopath: GOPATH环境变量
environment: 环境变量
importpath: 导入路径语法
packages: 包列表的描述
testflag: 测试符号描述
testfunc: 测试函数描述

同样使用 go help <topic>来查看这些概念的的信息。

buildrun 命令

就像其他静态类型语言一样,要执行 go 程序,需要先编译,然后在执行产生的可执行文件。go build 命令就是用来编译 go 程序生成可执行文件的。但并不是所以的 go 程序都可以编译生成可执行文件的, 要生成可执行文件,go 程序需要满足两个条件:
该 go 程序需要属于 main 包
在 main 包中必须还得包含 main 函数
也就是说 go 程序的入口就是 main.main, 即 main 包下的 main 函数, 例子(hello.go):

package main

import "fmt"

func main() {
    fmt.Println("Hello World!")
}

编译 hello.go,然后运行可执行程序:

$ go run hello.go   # 将会生成可执行文件 hello
$ ./hello           # 运行可执行文件
Hello World!

上面就是 go build 的基本用法,另外如果使用 go build 编译的不是一个可执行程序,而是一个包,那么将不会生成可执行文件。
而 go run 命令可以将上面两步并为一步执行(不会产生中间文件)。

$ go run hello.go
Hello World!

上面两个命令都是在开发中非常常用的。
此外 go clean 命令,可以用于将清除产生的可执行程序:

$ go clean    # 不加参数,可以删除当前目录下的所有可执行文件
$ go clean sourcefile.go  # 会删除对应的可执行文件

fmtdoc 命令

go 语言有一个褒贬不一的特性,就是对格式的要求很严格,我是很喜欢这个特性的,因为可以保持代码的清晰一致,编译组合开发,并且 go 还提供了一个非常强大的工具来格式化代码,它就是 go fmt sourcefile.go, 不过通常其实不需要我们手动调用,各种编辑器都可以帮助我们自动完成格式化。
go doc 命令可以方便我们快速查看包文档,go doc package 命令将会在终端中打印出指定 package 的文档。
另外有一个与 go doc 命令相关的命令是 godoc, 可以通过它启动我们自己的文档服务器:

godoc -http=:8080

然后我们就可与在浏览器 localhost:8080 中查看 go 文档了

get 命令

这个命令同样也是很常用的,我们可以使用它来下载并安装第三方包, 使用方式:

go get src

从指定源上面下载或者更新指定的代码和依赖,并对他们进行编译和安装,例如我们想使用 beego 来开发 web 应用,我们首先就需要获取 beego:

go get github.com/astaxie/beego

这条命令将会自动下载安装 beego 以及它的依赖,然后我们就可以使用下面的方式使用:

package main

import "github.com/astaxie/beego" # 这里需要使用 src 下的完整路径

func main() {
beego.Run()
}

install 命令
用来编译和安装 go 程序,我们可以将它与 build 命令对比:

install build

生成的可执行文件路径 工作目录下的 bin 目录下 当前目录下

可执行文件的名字 与源码所在目录同名 默认与源程序同名,可以使用-o 选项指定

依赖 将依赖的包放到工作目录下的 pkg 文件夹下

test命令

顾名思义,用来运行测试的命令,这种测试是以包为单位的。需要遵循一定规则:

测试源文件是名称以_test.go为后缀的

测试源文件内含若干测试函数的源码文件

测试函数一般是以Test为名称前缀, 并有一个类型为*testing.T的参数。

其他命令

其他命令不会经常使用,这里就不介绍了,真的用到的时候,直接使用 go help command 即可查看相关命令。

以上是关于go build和go install的区别的主要内容,如果未能解决你的问题,请参考以下文章

go的三个运行基本命令的区别,go run ,go build 和 go install

深入理解 go build 和 go install

Go_go build 和 go install

vc++ 6.0里面的compile、build、go三个按钮是啥区别?

go的数组和切片初始化

go语言入门