我正在使用ccache进行实验,但我不确定是否应该使用它。任何人都可以解释ccache导致错误行为的情况。或者我们应该总是使用ccache?任何获得该ccache的人都在考虑生成错误的目标文件或头文件中的更改吗?
答案 0 :(得分:9)
使用ccache
时几乎没有任何问题。有时(例如每月一次甚至更少),我用ccache -C
完全清理其缓存。
我的复杂 Makefile -s比ccache
更多。
简而言之,不要打扰,当你怀疑某事时,只需运行ccache -C
。
当您对编译时间进行基准测试时,显然应该避免使用ccache
。 (在这种情况下,您可以将-time
或-ftime-report
传递给gcc
或g++
。
我的意见,ccache
至少应该是可配置的,以禁止使用GCC插件进行编译的缓存,因为GCC插件可以做任何不可缓存的事情(例如查询数据库或web服务)。请参阅this message。
答案 1 :(得分:4)
您通过提出错误的行为来表达您的问题。
如果使用不当,ccache可能遇到的错误行为会降低您的编译速度。 ccache必须扫描文件以识别过去的编译,因此通过ccache的实际编译比没有它的情况要慢。只有缓存命中更快。
当您经常重新编译相同的代码而不修改它时,ccache非常有用。它不会加速编译新代码或修改代码。
答案 2 :(得分:3)
我曾经遇到过通过ccache进行SCons编译的问题(符号链接方法)。
事实证明ccache 需要在环境中设置$ HOME变量,而SCons默认不设置它(SCons有策略尽可能地将构建与环境隔离开来)默认情况下)。
我不完全确定这是否会被视为ccache的问题或仅与SCons互操作。除了这个怪癖之外,我从来没有遇到任何关于ccache的麻烦。
我已经习惯将〜/ .ccache链接到tmpfs以避免不必要地佩戴我的SSD。显然,这不是ccache的问题,因为没有它,情况会更糟。 (要记住的事情)