mon*_*nen 4 caching buildroot ccache
使用 CCACHE 时使用多个缓存目录或完全清除缓存的实际原因是什么?
Buildroot BR2_CCACHE 配置选项的帮助说明说:
请注意,当编译器以不兼容的方式更改时,Buildroot 不会尝试使缓存内容无效。因此,如果您更改编译器版本和/或配置,您有责任通过删除 $HOME/.buildroot-ccache 目录来清除 ccache 缓存。
如果我理解正确,CCACHE 会识别不同的编译器版本,并且缓存是基于每个编译器完成的。那么,描述所指的那些情况是什么?
此外,一些消息来源似乎建议应定期清除缓存。其他人指出缓存在达到“最大缓存大小”阈值时会自动清除。
显然,如果缓存的数据已损坏,那么您需要对其进行处理。是否有其他原因清除缓存?保留一个缓存没有意义吗?
主要原因是因为 buildroot 将 CCACHE_COMPILERCHECK 变量设置为“无”。请参阅Buildroot 中的 ccache.mk。
Buildroot 这样做是有充分理由的:每次他们重建相同的编译器版本(假设是 gcc 4.8.0)时,所有 ccache 结果都会被丢弃,即使它们仍然有效。此外,工具链的另一部分可能会发生变化。这也会影响缓存的文件,但不会通过检查编译器版本是否更改来检测。在未来,它可能是一个广泛的检查覆盖工具链的所有必要的零件将被使用。情况似乎还不是这样。
显然,这不是最佳选择:理想情况下,当您将编译器版本从 4.8 更改为 4.9 时,ccache 结果将被自动清除。现在,您必须手动执行此操作。
| 归档时间: |
|
| 查看次数: |
3639 次 |
| 最近记录: |