【小白】在使用了Go module之后,go build和go install 的区别是什么呢?怎么不加参数好像都不会生成.a文件了

耶~! 2020-05-11 12:00:23
在使用了Go module之后,除了生成exe位置不一样以外go build和go install 的区别还有什么呢?
在用go path的时候go install -i会在pkg里生成.a文件,但是用了go module之后go install -i好像不生成.a了,这是为什么呢?
...全文
750 5 打赏 收藏 举报
写回复
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Leo_demoniac 2021-04-16
请问发现.a文件了莫有,因为我们的模式下,只提供静态包去结合其他项目编译。现在没有了。只能mod模式下包,改成vendor然后改GOPATH。再逐步加上src下的pkg,bin。太麻烦了。每次调试半条命都没了
  • 打赏
  • 举报
回复
耶~! 2020-05-18
引用 3 楼 Steven8902 的回复:
Go module模式下,go install只是编译package,并且缓存结果,并没有install操作。也就是其它依赖它的项目编译时因为有cache会加快速度吧。
好像Go module下go install和go build生成的文件是一样的耶。都会在\pkg\mod\cache\download目录下下载东西。除了生成exe的位置不同好像没发现别的区别,都莫得.a。
  • 打赏
  • 举报
回复
Steven8902 2020-05-17
Go module模式下,go install只是编译package,并且缓存结果,并没有install操作。也就是其它依赖它的项目编译时因为有cache会加快速度吧。
  • 打赏
  • 举报
回复
耶~! 2020-05-16
引用 1 楼 qybao 的回复:
我觉得可能跟依赖包的管理方式有关吧 不用go module(或go dep),依赖包要自己用go get下载到本地,而go mod会是把依赖包下载到临时文件夹(pkg/mod),go dep是下载到当前文件夹的vendor,用go install -i 的时候,这些依赖包的源代码并不真正存在go path的src下,所以没法在pkg生成和src相同的目录结构,所以也就不能在pkg的相同目录下生成a了(生成的a估计也是在临时文件夹里)
好像临时文件夹里也没有,我全盘扫过了没有对应的.a文件。这么看好像install这个命令已经没用处了呀,就是比build多了一个吧exe扔到bin里的操作。 而且好像只能用build去生成.a。install好像没办法生成了。 难道是因为.a只是一个中间结果的缘故就被废弃了?不是说go在编译的时候先判断package的源码是否有改动,如果没有的话,就不再重新编译.a,删了.a不会使速度下降嘛。而且我好像看到资料有些地方的开发需要用.a当库文件吧。。
  • 打赏
  • 举报
回复
qybao 2020-05-15
我觉得可能跟依赖包的管理方式有关吧
不用go module(或go dep),依赖包要自己用go get下载到本地,而go mod会是把依赖包下载到临时文件夹(pkg/mod),go dep是下载到当前文件夹的vendor,用go install -i 的时候,这些依赖包的源代码并不真正存在go path的src下,所以没法在pkg生成和src相同的目录结构,所以也就不能在pkg的相同目录下生成a了(生成的a估计也是在临时文件夹里)

  • 打赏
  • 举报
回复
相关推荐
发帖
go语言

1764

社区成员

go语言学习与交流版
社区管理员
  • go语言社区
加入社区
帖子事件
创建了帖子
2020-05-11 12:00
社区公告
暂无公告