在使用CCACHE时,使用多个缓存目录或完全清除缓存的实际原因是什么?
有关Buildroot BR2_CCACHE配置选项的帮助说明如下:
请注意,当编译器以不兼容的方式更改时,Buildroot不会试图使缓存内容失效。因此,如果您更改了编译器版本和/或配置,则负责通过删除$HOME/..buildroot ccache目录来清除ccache缓存。
如果我正确理解,CCACHE可以识别不同的编译器生成。和缓存是在每个编译器的基础上完成的.那么,描述所指的情况是什么呢?
此外,一些消息来源似乎建议应该定期清除缓存。其他人指出,当缓存达到“最大缓存大小”阈值时,缓存就会自动清除。。
显然,如果缓存的数据已损坏,则需要对其进行处理。还有其他原因可以清除缓存吗?保留一个缓存不是很有意义吗?
发布于 2015-01-13 06:54:59
主要原因是buildroot将CCACHE_COMPILERCHECK变量设置为“none”。见建筑中的ccache.mk。
Buildroot这样做是有原因的:每次他们重建相同的编译器版本(比如gcc 4.8.0),所有ccache结果都会被丢弃,即使它们仍然有效。此外,工具链的另一部分可能会发生变化。这也会影响缓存的文件,但不会通过检查编译器版本是否更改来检测。在未来,有可能进行广泛的检查,涵盖工具链将被使用的所有必要部分。现在似乎还不是这样。
显然,这不是最优的:理想情况下,当您将编译器版本从4.8更改为4.9时,ccache结果将自动清除。现在,您必须手动完成此操作。
https://stackoverflow.com/questions/27906820
复制相似问题