清除ccache或使用多个ccache目录的原因

时间:2015-01-12 16:46:09

标签: caching buildroot ccache

使用CCACHE时,使用多个缓存目录或完全清除缓存的实际原因是什么?

Buildroot BR2_CCACHE配置选项的帮助说明如下:

  

请注意,当编译器以不兼容的方式更改时,Buildroot不会尝试使缓存内容无效。因此,如果您对编译器版本和/或配置进行了更改,则您负责通过删除$ HOME / .buildroot-ccache目录来清除ccache缓存。

如果我理解正确,different compiler builds are recognized by CCACHE和缓存是基于每个编译器完成的。那么,描述所指的那些情况是什么?

此外,一些消息来源似乎建议应定期清除缓存。 Others point out that cache is cleaned up automatically when it reaches the "max cache size" threshold

显然,如果缓存的数据已损坏,那么您需要对其进行一些操作。还有其他原因可以清除缓存吗?保留一个缓存是不是有意义?

1 个答案:

答案 0 :(得分:4)

主要原因是因为buildroot将CCACHE_COMPILERCHECK变量设置为'none'。请参阅ccache.mk in Buildroot

Buildroot这样做是有充分理由的:每次他们重建相同的编译器版本(比如说gcc 4.8.0),所有的ccache结果都会被抛弃,即使它们仍然有效。此外,工具链的另一部分可能会发生变化。这也会影响缓存的文件,但不会通过检查编译器版本是否更改来检测。将来,可能会进行大量检查,涵盖工具链will be used的所有必要部分。看起来似乎并非如此。

显然,这不是最佳的:理想情况下,当您将编译器版本从4.8更改为4.9时,将自动清除ccache结果。现在,你必须手动完成。