【问题标题】:How to organise downloads & sstate_cache for Yocto builds?如何为 Yocto 构建组织下载和 sstate_cache?
【发布时间】:2026-01-30 14:15:01
【问题描述】:
我倾向于为各种板和版本(相扑、战士等)构建 Yocto。为了加快构建速度,我使用了单独的 DL_DIR 和 SSTATE_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 条目的文件名中,因此无论如何它们都会被重建。