Yocto 已生成库,但不是rootfs的一部分

Yocto 已生成库,但不是rootfs的一部分,yocto,Yocto,我已经使用yocto(核心图像最小)构建了图像。我需要“libtinfo”库来运行我的应用程序,但它不是rootfs的一部分 我可以看到这个库是在“cortexa7hf neon poky linux gnueabi”文件夹下构建和提供的,但它在rootfs中不可用。我已经使用IMAGE\u INSTALL\u append添加了 我的疑问是,如果rootfs(核心映像最小)不需要这个库,那么就不应该构建它 为什么yocto要建那个图书馆?libudev库也观察到类似的行为 在回答您的问题之前,

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

我可以看到这个库是在“cortexa7hf neon poky linux gnueabi”文件夹下构建和提供的,但它在rootfs中不可用。我已经使用IMAGE\u INSTALL\u append添加了

我的疑问是,如果rootfs(核心映像最小)不需要这个库,那么就不应该构建它


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

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

DEPENDS += "libtinfo"
RDEPENDS_${PN} += "libtinfo"
这将指示yocto在rootfs中包含库,因为您的应用程序在运行时需要它

我的疑问是,如果不需要图书馆 rootfs(核心映像最小)则不应构建它

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

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

在您的情况下,
libtinfo
是在
ncurses
包中构建的,任何包在rootfs中都可能不需要它

为什么yocto要建那个图书馆?同样的行为也被观察到 libudev图书馆也有

默认情况下,源组件
ncurses
systemd
的配方分别包括
libtinfo
libudev
的配置(
do\u configure
)。但它不包括在rootfs中,因为在运行时没有任何软件需要它

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

bitbake -g <recipe name>
bitbake-g

如前所述。

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

DEPENDS += "libtinfo"
RDEPENDS_${PN} += "libtinfo"
这将指示yocto在rootfs中包含库,因为您的应用程序在运行时需要它

我的疑问是,如果不需要图书馆 rootfs(核心映像最小)则不应构建它

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

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

在您的情况下,
libtinfo
是在
ncurses
包中构建的,任何包在rootfs中都可能不需要它

为什么yocto要建那个图书馆?同样的行为也被观察到 libudev图书馆也有

默认情况下,源组件
ncurses
systemd
的配方分别包括
libtinfo
libudev
的配置(
do\u configure
)。但它不包括在rootfs中,因为在运行时没有任何软件需要它

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

bitbake -g <recipe name>
bitbake-g
如前所述