我已经使用yocto(core-image-minimal)构建了图像。我需要“ libtinfo”库来运行我的应用程序,但它不是rootfs的一部分。
我可以看到该库已构建并在“ cortexa7hf-neon-poky-linux-gnueabi”文件夹下可用,但在rootfs中不可用。我使用IMAGE_INSTALL_append添加了。
我的疑问是,如果rootfs(core-image-minimal)不需要该库,则不应构建该库。
为什么yocto建立了那个图书馆? libudev库也观察到类似的行为。
答案 0 :(得分:2)
在回答问题之前,如果您有一个依赖于“ libtinfo”的应用程序,并且您的应用程序也是使用yocto构建的(例如sample_app.bb),那么您应该使用
DEPENDS += "libtinfo"
RDEPENDS_${PN} += "libtinfo"
这将指示yocto在应用程序需要运行时将其包含在rootfs中。
我的疑问是,如果不需要 rootfs(core-image-minimal),则不应构建。
假设您有一个生成二进制文件和库的包的源,例如kmod
的源将生成libkmod
和modprobe, insmod, rmmod
。在这种情况下,将以这样一种方式来编写配方以产生两个不同的程序包(根据配置,您可以看到* .rpm或* .ipk)文件,即kmod_*.ipk/rpm
和libkmod2_*.ipk/rpm
。
根据您对应用程序的实际需求,可以在kmod
中使用libkmod
或RDEPENDS
。
对于您来说,libtinfo
是内置在ncurses
软件包中的,任何软件包在rootfs中可能都不需要。
为什么yocto建立了那个图书馆?观察到类似的行为 libudev库也是如此。
默认情况下,源组件ncurses
或systemd
的配方分别包含do_configure
和libtinfo
的配置(libudev
)。但是它不包含在rootfs中,因为在运行时没有软件需要它。
您始终可以使用来检查依赖关系图
bitbake -g <recipe name>
如here所述。