ccache的缺点

Posted

技术标签:

【中文标题】ccache的缺点【英文标题】:disadvantages of ccache 【发布时间】:2011-12-18 18:45:46 【问题描述】:

我正在使用 ccache 进行实验,但我不太确定是否应该使用它。任何人都可以解释 ccache 可能导致错误行为的情况。还是我们应该总是使用 ccache ?任何获得 ccache 的人都在生成错误的目标文件或头文件的更改不被考虑?

【问题讨论】:

ccache.samba.org 说不应该有任何错误行为,如果有人知道,他应该报告它而不是在 *** 上回答问题。 绝对。谢谢,我应该使用更新的 ccache 并继续寻找未处理的现有报告错误,以了解可能存在的错误。 【参考方案1】:

在使用ccache 时,我几乎没有遇到任何问题。有时(例如每月一次甚至更少),我会使用 ccache -C 完全清理其缓存。

我对复杂的 Makefile-s 的问题比使用 ccache 的问题更多。

简而言之,不要打扰,当您怀疑某些事情时,只需运行ccache -C

当您对编译时间进行基准测试时,您显然应该避免使用ccache。 (在这种情况下,您可以将-time-ftime-report 传递给gccg++)。

附录

我认为,ccache 至少应该可以配置为禁用缓存以使用 GCC 插件进行编译,因为 GCC 插件可以做任何不可缓存的事情(例如查询数据库或 Web 服务)。见this message。

【讨论】:

感谢您的建议... :-)。顺便说一句,有时您遇到问题的情况是什么?因为当我们遇到问题时,很难知道它会因为 ccache 而出现。而且当你遇到问题时,“ccache -c”是绝对的解决方案,那么ccache肯定有问题。 不,我强烈怀疑 Makefile-s 中存在假设问题。在 MELT gcc-melt.org 中,我的 Makefile-s 有问题(对于部分重建,GCC Makefile-s 可能也不完整)。同样,我从不怀疑 ccache 做错了。 ccache 通常被触发为 gcc 如果一个坏的 Makefile 忘记运行编译命令,不管有没有 ccache 你都会遇到麻烦。【参考方案2】:

您提出了错误的行为,从而很好地表达了您的问题。

如果使用不当,ccache 可能会导致编译速度变慢。 ccache 必须扫描文件以识别过去的编译,因此通过 ccache 进行实际编译比没有它时要慢。只有缓存命中更快。

当您经常重新编译相同的代码而不修改它时,ccache 很有用。它不会加快新代码或修改代码的编译速度。

【讨论】:

【参考方案3】:

我曾经遇到过通过 ccache(符号链接方法)编译 SCons 的问题。

环境设置

原来 ccache 需要在环境中设置 $HOME 变量,而 SCons 默认情况下没有设置它(SCons 有尽可能将构建与环境隔离的策略默认)。

我不完全确定这是否会算作 ccache 的问题,或者仅仅是与 SCons 的互操作。除了这个怪癖之外,我在使用 ccache 时从来没有遇到过任何问题。

SSD 磨损

我养成了将 ~/.ccache 链接到 tmpfs 的习惯,以避免不必要地磨损我的 SSD。显然,这不是 ccache 的问题,因为没有它,情况会更糟。 (需要记住的一点

【讨论】:

以上是关于ccache的缺点的主要内容,如果未能解决你的问题,请参考以下文章

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

ccache 的“要求链接”是啥意思

使用 gcc 和 ccache

如何在 Linux 上启用 ccache

Visual Studio 是不是有“ccache”? [关闭]

cmake使用ccache