kar*_*bar 0 package dynamic-library openembedded bitbake yocto
我有一个BitBake recipe(example_0.1.bb),do_install其中包含一个尝试安装.so文件的任务:
do_install() {
install -d ${D}${libdir}
install -m 0644 ${S}/example.so ${D}${libdir}
}
FILES_${PN} += "${libdir}/example.so"
Run Code Online (Sandbox Code Playgroud)
这在构建过程中失败并返回:
ERROR: example not found in the base feeds
Run Code Online (Sandbox Code Playgroud)
但是,如果我将测试文件添加到包中,则.so文件和测试文件都会添加到rootfs中.
do_install() {
install -d ${D}${libdir}
install -m 0644 ${S}/example.so ${D}${libdir}
echo "bar" >> ${TOPDIR}/foo
install -m 0644 ${TOPDIR}/foo ${D}${libdir}
}
FILES_${PN} += "${libdir}/libceill.so"
FILES_${PN} += "${libdir}/foo"
Run Code Online (Sandbox Code Playgroud)
如何只添加.so没有垃圾测试文件的文件?
所以你有一个非标准的库,它没有安装版本化的库(libfoo.so.1.2.3,也许是符号链接,如libfoo.so.1 - > libfoo.so.1.2.3),然后是编译时间的无版符号链接(libfoo.so - > libfoo.so.1).默认打包规则假定使用标准库.
发生的事情是包裹是由他们在PACKAGES中的订单填充的,PACKAGES在PN之前有PN-dev.FILES_PN-dev默认包含/usr/lib/lib*.so,FILES_PN包含/usr/lib/lib*.so..当你将/ usr/lib/lib .so添加到FILES_PN时,你想要发生的事情没有发生,因为PN-dev 已经采用了这些文件.
如果您的库根本没有任何开发文件(例如没有标题),那么您可以设置FILES _ $ {PN} -dev =""来清空该包,然后添加lib*.so到FILES _ $ { PN}将按预期工作.
是的,这是我们应该更容易的事情(我一直在考虑像这样的图书馆的小班级),并在发生时进行健全性检查.
哦,我很惊讶库在你的第二个例子中的图像结束,例如将包含/ usr/lib/foo,example-dev将包含/usr/lib/libceill.so.除非您启用了dev-pkgs,否则如果您在图像中有示例,则会自动安装example-dev.