BitBake:在基本提要中找不到示例
BitBake: example not found in the base feeds
我有一个带有 do_install
任务的 BitBake 配方 (example_0.1.bb
),我试图在其中安装 .so
文件:
do_install() {
install -d ${D}${libdir}
install -m 0644 ${S}/example.so ${D}${libdir}
}
FILES_${PN} += "${libdir}/example.so"
这在构建过程中失败并且 returns:
ERROR: example not found in the base feeds
但是,如果我将测试文件添加到包中,.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"
如何只添加 .so
文件而不添加垃圾测试文件?
添加行
FILES_SOLIBSDEV = ""
来自 Yocto 邮件列表的解释:
I had FILES_${PN} += “${libdir}/.so” in there and that didn't work.
Maybe it was because I was missing the FILES_SOLIBSDEV = “" you mentioned.
I'll play with it some more and see what happens. I first started out with
FILES_${PN} += “${libdir}/.so” and when that didn't work I tried other
things in the FILES_${PN} = line to try and get it picked up. When I
couldn't get any of it to work and then saw others (well, at least the link
I provided) were seeing the same thing I figured it was time to quit
spinning my wheels and consult the big guns :)
呵呵 :) 问题是模式是按照
包变量。第一个包含文件的包获取它,并且
${PN}-dev 在 ${PN} 之前的 PACKAGES 中。通过清空 FILES_SOLIBSDEV,这将
从 FILES_${PN}-dev 中删除 .so,让 ${PN} 包获取它
相反。
所以你有一个 non-standard 的库,因为它没有安装版本控制的库(libfoo.so.1.2.3,可能是符号链接,例如 libfoo.so.1 - > libfoo.so.1.2.3),然后是编译时的未版本化符号链接 (libfoo.so -> libfoo.so.1)。默认打包规则采用标准库。
发生的情况是,包裹是根据它们在 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 已经获取了文件 .
如果您的库根本没有任何开发文件(例如没有 headers),那么您可以设置 FILES_${PN}-dev = "" 来清空该包,然后添加lib*.so 到 FILES_${PN} 将按预期工作。
是的,这是我们应该简化的事情(我一直在考虑为这样的库设计一个小型的 class)并在它发生时在完整性检查中发出警告。
哦,我很惊讶库最终出现在你的第二个例子的图像中,因为例子将包含 /usr/lib/foo 而 example-dev 将包含 /usr/lib/libceill.so.当然,除非您启用了 dev-pkgs,如果您在图像中有示例,它将自动安装 example-dev。
添加行:
FILES_${PN}_dev_remove="${FILES_SOLIBDEV} "
它将移出开发路径的包。
我有一个带有 do_install
任务的 BitBake 配方 (example_0.1.bb
),我试图在其中安装 .so
文件:
do_install() {
install -d ${D}${libdir}
install -m 0644 ${S}/example.so ${D}${libdir}
}
FILES_${PN} += "${libdir}/example.so"
这在构建过程中失败并且 returns:
ERROR: example not found in the base feeds
但是,如果我将测试文件添加到包中,.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"
如何只添加 .so
文件而不添加垃圾测试文件?
添加行
FILES_SOLIBSDEV = ""
来自 Yocto 邮件列表的解释:
I had FILES_${PN} += “${libdir}/.so” in there and that didn't work. Maybe it was because I was missing the FILES_SOLIBSDEV = “" you mentioned. I'll play with it some more and see what happens. I first started out with FILES_${PN} += “${libdir}/.so” and when that didn't work I tried other things in the FILES_${PN} = line to try and get it picked up. When I couldn't get any of it to work and then saw others (well, at least the link I provided) were seeing the same thing I figured it was time to quit spinning my wheels and consult the big guns :)
呵呵 :) 问题是模式是按照 包变量。第一个包含文件的包获取它,并且 ${PN}-dev 在 ${PN} 之前的 PACKAGES 中。通过清空 FILES_SOLIBSDEV,这将 从 FILES_${PN}-dev 中删除 .so,让 ${PN} 包获取它 相反。
所以你有一个 non-standard 的库,因为它没有安装版本控制的库(libfoo.so.1.2.3,可能是符号链接,例如 libfoo.so.1 - > libfoo.so.1.2.3),然后是编译时的未版本化符号链接 (libfoo.so -> libfoo.so.1)。默认打包规则采用标准库。
发生的情况是,包裹是根据它们在 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 已经获取了文件 .
如果您的库根本没有任何开发文件(例如没有 headers),那么您可以设置 FILES_${PN}-dev = "" 来清空该包,然后添加lib*.so 到 FILES_${PN} 将按预期工作。
是的,这是我们应该简化的事情(我一直在考虑为这样的库设计一个小型的 class)并在它发生时在完整性检查中发出警告。
哦,我很惊讶库最终出现在你的第二个例子的图像中,因为例子将包含 /usr/lib/foo 而 example-dev 将包含 /usr/lib/libceill.so.当然,除非您启用了 dev-pkgs,如果您在图像中有示例,它将自动安装 example-dev。
添加行: FILES_${PN}_dev_remove="${FILES_SOLIBDEV} " 它将移出开发路径的包。