有几种方法可以找到它:
bitbake -g 可能是其中之一,您只是错误地设置了目标。
bitbake -g 获取 BUILD 依赖项,因此,它会告诉您需要构建 valgrind 的包(或任务),但是执行 bitbake -g valgrind 会告诉您 valgrind 需要哪些 包,不是什么包需要valgrind(不一样),你需要做的:
bitbake <your-image> -g
例如
bitbake core-image-minimal -g
这将是您图像的构建依赖项,它可能会告诉您图像中的哪个包需要 valgrind,(打开 task-depends.dot 文件并查找右侧的 valgrind 行)
如果 bitbake -g 不够用,Bitbake -e 可能是另一种方式
bitbake -e | grep PACKAGE_INSTALL
bitbake -e 将打印出 bitbake 的字典,特别是您应该查看 PACKAGE_INSTALL 变量,如果 valgrind 存在,您可以看到将它添加到变量的配方以及安装它的原因
如果valgrind实际上是一个二级依赖,也就是说PACKAGE_A有一个RDEPENDS+="valgrind",并且需要安装PACKAGE_A,那么你需要查看包管理器的输出,这取决于你是否正在使用 RPM、DEB 或 IPK 文件,有更具体的方法可以找到它,但查看图像的 log.do_rootfs 文件可能会为您提供足够的信息,了解哪个包对 valgrind 具有运行时依赖项:
例如,如果您使用 RPM,您会看到类似这样的内容(为便于阅读而修剪):
$ cat tmp/work/qemuarm64-poky-linux-musl/core-image-minimal/1.0-r0/temp/log.do_rootfs
Package Arch Version Repo Size
================================================================================
Installing:
base-passwd cortexa57 3.5.29-r0 oe-repo 7.2 k
busybox cortexa57 1.35.0-r0 oe-repo 364 k
busybox-mdev cortexa57 1.35.0-r0 oe-repo 8.7 k
dropbear cortexa57 2020.81-r0 oe-repo 132 k
initramfs-live-boot-tiny qemuarm64 1.0-r12 oe-repo 8.6 k
packagegroup-core-boot qemuarm64 1.0-r17 oe-repo 5.8 k
run-postinsts noarch 1.0-r10 oe-repo 7.4 k
Installing dependencies:
base-files qemuarm64 3.0.14-r89 oe-repo 13 k
busybox-inittab qemuarm64 1.35.0-r0 oe-repo 7.6 k
eudev cortexa57 3.2.10-r0 oe-repo 181 k
libblkid1 cortexa57 2.37.3-r0 oe-repo 85 k
libkmod2 cortexa57 29-r0 oe-repo 36 k
libz1 cortexa57 1.2.11-r0 oe-repo 46 k
musl cortexa57 1.2.2+git0+c4d4028dde-r0 oe-repo 364 k
netbase noarch 1:6.3-r0 oe-repo 14 k
update-alternatives-opkg cortexa57 0.5.0-r0 oe-repo 8.5 k
Installing weak dependencies:
busybox-syslog cortexa57 1.35.0-r0 oe-repo 8.7 k
在此示例中,您可以看到我从未请求将libz1 安装在我的映像中(以及其他列为依赖项的),但是上面部分中的一个包需要这些包才能运行。
log.do_rootfs 文件中有更多信息可以直接告诉您需要什么 valgrind,如果您仍然找不到它,请返回 bitbake -g 并查找包含上述软件包的行(因为这些直接依赖于您的图像),其中之一应该需要 valgrind。
RPM 命令
最后但同样重要的是,这是为 rpms 量身定制的,但是对于 debs 或 ipks 的过程应该非常相似,尽管命令会有所不同,但是一旦您从 log.do_rootfs 获得要安装的软件包列表,您就可以查询通过 rpm 命令获取 rpm 包:
我将使用 dropbear 包作为上面的示例:
$ rpm -qR tmp/deploy/rpm/cortexa57/dropbear-2020.81-r0.cortexa57.rpm
/bin/sh
libc.so()(64bit)
libz1 >= 1.2.11
libz.so.1()(64bit)
rtld(GNU_HASH)
update-alternatives-opkg
所以,就我而言,dropbear 包是 libz1 依赖的罪魁祸首。