消息关闭
    暂无新消息!

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

问题作者 : 风之2017-05-24发布

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


3个回答

︿ 0

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

︿ 0

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

可以参考 Russ Cox 的话

︿ 0

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

gcc -g *.c

这样傻。