【问题标题】:How to organise downloads & sstate_cache for Yocto builds?如何为 Yocto 构建组织下载和 sstate_cache?
【发布时间】:2026-01-30 14:15:01
【问题描述】:

我倾向于为各种板和版本(相扑、战士等)构建 Yocto。为了加快构建速度,我使用了单独的 DL_DIRSSTATE_DIR。我遵循的结构如下:

  • 所有版本和板的单一下载目录(因为不同板的大多数版本使用相同的工具链)
  • 每个板的单独 sstate 缓存目录

我的问题是,我可以使用单个SSTATE_DIR 来提高性能并减小文件夹大小吗?有人试过吗?

我们也非常感谢您提出建议和个人经验。

【问题讨论】:

    标签: optimization build yocto


    【解决方案1】:

    您可以在所有构建目录和 Yocto 版本之间共享DL_DIR。这些只是源代码的压缩包。

    您可以在所有构建目录之间共享SSTATE_DIR,尽管它仅对共享相同 Yocto 版本的构建有益,否则根本不会提高大小或速度。这是有道理的,因为相同架构的机器的许多本机包和“基本”目标包(在您的情况下为aarch64)对于所述机器来说是相同的,并且将使用共享的SSTATE_DIR。对于不匹配的情况,新条目将添加到您的SSTATE_DIR。当你有不同的 Yocto 版本时,一些包配方已经更新,最常见的是 glibc、binutils 和 gcc 更新。这些是几乎所有其他包配方使用的包,这实际上使得无法从早期(或更高版本)的 Yocto 版本中重新使用 sstate-cache 来用于未更改的包配方,因为它们所依赖的包配方是其中的一部分所述食谱的状态缓存。此外,Yocto 版本位于 sstate-cache 条目的文件名中,因此无论如何它们都会被重建。

    【讨论】: