go build每次都要重新编译全部文件吗?

用Jetbrains的Gogland IDE看Consul项目的源码,打断点调试运行,发现每次启动程序都要编译半分钟才能运行,但是我对程序并没有做任何修改。命令行使用go build也是每次都等半分钟。
求解惑

阅读 13.2k
3 个回答

官方库是不会重编译的,但是导入 get 来的库是每次都会重编译的,
因为没有生成 .a 文件,如果执行 go install xxxxxx 就会生成.a 文件用来缓存,这时候如果你导入的包没有修改,就不会再重编译了

可以参考 Russ Cox 的话
clipboard.png

新手上路,请多包涵

编译修改的部分。你每次执行go build 会发现,并不是所有被引用的包,都被编译了。只是与被修改的包相关的包被编译了。

楼上说得很对,大部分编译语言一般都是只编译修改过的文件和依赖所修改文件的文件,除非你每次都像

gcc -g *.c

这样傻。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题