库已构建但不是rootfs的一部分

时间:2018-09-10 10:44:22

标签: yocto

我已经使用yocto(core-image-minimal)构建了图像。我需要“ libtinfo”库来运行我的应用程序,但它不是rootfs的一部分。

我可以看到该库已构建并在“ cortexa7hf-neon-poky-linux-gnueabi”文件夹下可用,但在rootfs中不可用。我使用IMAGE_INSTALL_append添加了。

我的疑问是,如果rootfs(core-image-minimal)不需要该库,则不应构建该库。

为什么yocto建立了那个图书馆? libudev库也观察到类似的行为。

1 个答案:

答案 0 :(得分:2)

在回答问题之前,如果您有一个依赖于“ libtinfo”的应用程序,并且您的应用程序也是使用yocto构建的(例如sample_app.bb),那么您应该使用

DEPENDS += "libtinfo"
RDEPENDS_${PN} += "libtinfo"

这将指示yocto在应用程序需要运行时将其包含在rootfs中。

  

我的疑问是,如果不需要   rootfs(core-image-minimal),则不应构建。

假设您有一个生成二进制文件和库的包的源,例如kmod的源将生成libkmodmodprobe, insmod, rmmod。在这种情况下,将以这样一种方式来编写配方以产生两个不同的程序包(根据配置,您可以看到* .rpm或* .ipk)文件,即kmod_*.ipk/rpmlibkmod2_*.ipk/rpm

根据您对应用程序的实际需求,可以在kmod中使用libkmodRDEPENDS

对于您来说,libtinfo是内置在ncurses软件包中的,任何软件包在rootfs中可能都不需要。

  

为什么yocto建立了那个图书馆?观察到类似的行为   libudev库也是如此。

默认情况下,源组件ncursessystemd的配方分别包含do_configurelibtinfo的配置(libudev)。但是它不包含在rootfs中,因为在运行时没有软件需要它。

您始终可以使用来检查依赖关系图

bitbake -g <recipe name>

here所述。