我使用Yocto构建一个文件系统,使用core-image-minimal的.bbappend。两个问题:
如何确定哪个软件包在rootfs上占用了大量存储空间?
除了查看每个包的$ {D}并看其组件有多大之外,我想不出办法。要做到这一点,必须有一个更系统,更智能的方式。
从我可以从清单中解读的内容中,没有任何内容与包含的包的大小有关。
此外,删除我使用IMAGE_INSTALL对象添加的一些软件包似乎删除了软件包,但构建的图像的最终结果并没有显示其大小的变化!!
谢谢!
答案 0 :(得分:4)
1)一种方法是通过将以下内容添加到local.con
来启用buildhistoryINHERIT += "buildhistory"
BUILDHISTORY_COMMIT = "1"
这将在$ BUILDDIR中创建一个目录(git repo)buildhistory。在那里你可以找到例如。
images/$MACHINE/eglibc/$IMAGE/installed-package-sizes.txt
该文件将为您提供所有已安装软件包的大小。
您可以从buildhistory了解更多内容,请参阅buildhistory introduction
2)你在哪里比较特定的.so文件?如果它来自包的$ {B}(即构建库的地方),那就不足为奇了,因为安装的.so文件将被剥离。调试信息安装在-deb.rpm中(因为调试信息在目标上通常是无用的,较小的大小具有更高的重要性)。
答案 1 :(得分:0)
有些人看了一下脚本/子目录以及一些关于现有脚本的谷歌搜索,结果证明Yocto的好人确实让这些脚本正常运行: scripts / tiny / dirsize.py和ksize.py。
dirsize.py将为您提供rootfs的pkg大小细分;而ksize.py将为您提供内核的等效信息。