目录 recipe-sysroot-native 占用200M +磁盘空间,我发现它存在于每个WORKDIR中,我认为它们都具有保存内容。拥有如此多的副本浪费了磁盘空间,并且可能减慢了构建时间。可以将它放置在固定的位置,并且每个WORKDIR都通过符号链接对其进行访问吗?
答案 0 :(得分:0)
如staging.bbclass中所述,recipe-sysroot
和recipe-sysroot-native
中的文件并非总是副本。 Yocto尝试创建到实际文件的硬链接(即仅增加对该文件的引用计数)。
因此recipe-sysroot
和recipe-sysroot-native
中的所有文件都是硬链接,指向磁盘中的一个源文件。因此,您的磁盘上没有任何重复的空间。
Here,您可以看到staging.bbclass
的实际实现,其中它尝试创建硬链接,如果不允许,则进行复制。
您始终可以使用ls -i
进行检查,以查看文件的引用计数。
下面的文字是从yocto mega平均复制的,
第二阶段处理想要使用以下内容的食谱 另一个配方,并通过 DEPENDS变量。配方将具有do_prepare_recipe_sysroot 任务,并在执行此任务时创建配方sysroot和 配方工作目录(即WORKDIR)中的recipe-sysroot-native。的 OpenEmbedded构建系统创建指向相关副本的硬链接 文件从sysroots-components移到配方工作目录。
注意:如果不可能使用硬链接,则构建系统将使用实际的 副本。