据我所知,ccache通过捕获先前的汇编和检测何时再次完成相同的编译来加速编译。然而,makefile做同样的事情。 那么为什么我们需要ccache? 何时我们使用它? 谢谢!何时使用ccache?
3
A
回答
4
如果你运行
make clean; make
,你也许可以从 的ccache受益。由于许多原因,开发人员通常会干净地构建一个项目 ,并且这会抛弃以前编译中的所有信息 。通过使用ccache,重新编译快得多 。使用ccache的另一个原因是相同的缓存用于在不同目录中构建 。如果您有几个版本或分支 存储在不同目录中的软件,构建目录中的许多目标文件 可能会从缓存中取出,即使它们已被编译为其他版本或分支。
第三种情况是使用ccache加速由 服务器执行的清理构建,或者构建可定期检查代码为 可构建的服务器场。
您还可以在共享编译服务器上共享用户之间的缓存,这对于非常有用的 。
1
从加快清洁的可疑益处
除了建立由虚线构建系统必要,并具有共享高速缓存的单纯偶然益处,存在即使对分离的无瑕疵的mtime基于构建系统合法使用的ccache的:
当你在分支之间来回跳动(不是在谈论单独的目录)或重新绑定,以至于最终碰到一大堆文件,或者如果你不走运,中央标题(如定义的)。 h)包含在所有的地方,你完美的基于mtime的构建系统会尽职地重建所有东西。如果你在过去的某段时间内建立了大部分相同的状态,ccache将加速这一重建过程。
相关问题
- 1. 使用ccache和make
- 2. 在Docker内部构建时使用ccache
- 3. 与ccache一起使用gcc
- 4. ccache的使用MinGW在Windows
- 5. 如何在CMake中使用CCache?
- 6. ccache为什么不经常使用gcc?
- 7. 在Windows上使用Qt Creator设置ccache
- 8. 如何设置共享ccache
- 9. CMake的想用ccache的,而不是GCC
- 10. 在Ubuntu中设置ccache
- 11. ccache和绝对路径
- 12. ccache BASEDIR(共享)配置
- 13. 是否有Visual Studio的Ccache?
- 14. 如何在多种体系结构中使用ccache与gcc -march = native?
- 15. ccache basedir无法正常工作
- 16. 何时使用R,何时使用SQL?
- 17. ccache没有删除CMake文件而没有命中缓存
- 18. 是否有ccache的或等同的distcc为.NET和/或单
- 19. 对不同目录中的同一文件有ccache链接
- 20. 何时/何时使用JSON?
- 21. 如何获得ccache到完整路径不传递给编译器DISTCC
- 22. 何时使用this.method()?
- 23. 何时使用TS
- 24. 何时使用plist?
- 25. 何时使用Hibernate?
- 26. 何时使用Integer.parseint
- 27. 何时使用mysql_real_escape_string()
- 28. 何时使用$ destroy
- 29. 何时使用Yield?
- 30. 何时使用mysqli_real_escape_string?
当我们运行make clean时,我们要清除所有的.o文件并重新编译。所以,如果我们想将先前的编译保存到缓存中,为什么不避免在之前运行make clean? – chicklet 2012-04-13 07:52:23
您可能刚刚更改了'Makefile'。或者你可能试图在没有'git'的情况下对一个bug进行分割:如果你解压缩一个旧版本的tarball,'make'会认为二进制文件是最新的,因为它们比源文件更新 - 但这将是错误的!在这两种情况下,都需要“干净”。 'ccache'不会犯同样的错误,因为它使用散列而不是时间戳,并且非常小心只能在输出相同的情况下进行。 – joeytwiddle 2014-08-05 19:45:43