安云网 - AnYun.ORG | 专注于网络信息收集、网络数据分享、网络安全研究、网络各种猎奇八卦。
当前位置: 安云网 > 技术关注 > 编程茶楼 > Go语言_go install 与 go build 的区别

Go语言_go install 与 go build 的区别

时间:2019-10-25来源:未知 作者:安云网点击:
相同 都可以生成可执行文件 不同 go install 能生成包 go build 不能生成包 实验证明以上相同和不同 假设是 Windows 系统 假设我的 GOPATH = D:\go 假设 D:\go\src\helloworld\helloworld.go 是存在的,helloworld.go 是带有主函数的go代码文件,它只需要
//内容来自安云网

相同

都可以生成可执行文件 //本文来自安云网

不同

go install 能生成包
go build 不能生成包

实验证明以上相同和不同

  • 假设是 Windows 系统

  • 假设我的 GOPATH = D:\go

  • 假设 D:\go\src\helloworld\helloworld.go 是存在的,helloworld.go 是带有主函数的go代码文件,它只需要 import "fmt",它的作用就是输出helloworld

  • 假设 D:\go\src\sayhello\sayhello.go 是存在的,sayhello.go 不带有主函数,它是 sayhello 包的,也就是 sayhello.go 的第一行代码是package sayhello

  • 假设 D:\go\src\helloworld2\helloworld2.go 是存在的,helloworld2.go 是带有主函数的go代码文件,它不仅需要 import "fmt" 还需要 import "sayhello",它的作用就是引用一下自己写的sayhello包,输出helloworld2

go install

先install一下helloworld
在命令行输入

cd D:\go\src\helloworldgo install

我们会发现

  1. D:\go\bin 存在,如果之前不存在,go install 会创建这个文件

  2. D:\go\bin 里边有新生成的 helloworld.exe,运行它,输出helloworld


再install一下sayhello
在命令行输入

cd D:\go\src\sayhellogo install

我们会发现

  1. D:\go\pkg\sayhello 存在,如果之前不存在,go install 会创建这个文件

  2. D:\go\pkg\sayhello 里边有新生成的 sayhello.a,它是包文件,不能运行


现在我们有了 sayhello.a 这个包
我们就能install一下helloworld2了
在命令行输入

cd D:\go\src\helloworld2go install

我们会发现

  1. D:\go\bin 存在,如果之前不存在,go install 会创建这个文件

  2. D:\go\bin 里边有新生成的 helloworld2.exe,运行它,输出helloworld2

go build

先build一下helloworld
在命令行输入

cd D:\go\src\helloworldgo build

我们会发现

  1. D:\go\bin并没有被 go build 修改过,go build 与 D:\go\bin 的变化没关系

  2. D:\go\src\helloworld 里边有新生成的 helloworld.exe 文件,其大小与之前install出来的一样,运行此 helloworld.exe,输出helloworld


再build一下sayhello
在命令行输入

cd D:\go\src\sayhellogo build

我们会发现

  1. D:\go\pkg\sayhello 并没有被 go build 修改过,go build 与 D:\go\pkg\sayhello 的变化没关系

  2. D:\go\src\sayhello 里边也没有新生成的 sayhello.a 文件

  3. 好像 go build 什么也没做


最后再build一下helloworld2
在命令行输入

cd D:\go\src\helloworld2go build

我们会发现

  1. D:\go\bin并没有被 go build 修改过,go build 与 D:\go\bin 的变化没关系

  2. D:\go\src\helloworld2 里边有新生成的 helloworld2.exe 文件,其大小与之前install出来的一样,运行此 helloworld2.exe,输出helloworld2

结论

  • 对于含主函数的go文件,go build 和 go install 都能成功编译它们并生成可执行文件,就是生成的可执行文件的地方不一样

  • 对于不含主函数的go的包文件,只有 go install 能在pkg中生成包文件,而 go build 能对go的包文件起作用,就是最终文件夹和执行 go build 之前一样,好像 go build 什么也没做,很迷。



本文标题: Go语言_go install 与 go build 的区别 安云网
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
验证码: 点击我更换图片
相关内容
推荐内容