最近在使用yocto添加自己的编译代码时,遇到了一个问题。报错如下:
ERROR: zm-bsp-0.1-r0 do_package: QA Issue: zm-bsp: Files/directories were installed but not shipped in any package:
网上查了很多信息,都没有解决我的问题,后面找到了一篇博客(源地址忘了),里面淡淡的提了一下FILES_${PN}似乎和安装位置有关,后续的安装路径似乎是从FILES_${PN}里面选择的。如果FILES_${PN}里面没有对应的安装路径,就会报这个错。
所以我就添加了如下代码:
FILES_${PN} += "${base_sbindir} ${sysconfdir} ${base_libdir}"
至此,完整解决了我的问题。
我的完整bb内容如下:
LICENSE = "CLOSED" PR = "r0" FILESEXTRAPATHS_prepend := "${THISDIR}:" SRC_URI = "file://script" S = "${WORKDIR}/script" FILES_${PN} += "${base_sbindir} ${sysconfdir} ${base_libdir}" do_install () { install -d ${D}/${base_sbindir} install -d ${D}/${base_libdir}/systemd/system/ install -d ${D}/${sysconfdir}/systemd/system/multi-user.target.wants/ install -m 0644 vlan.service ${D}/${base_libdir}/systemd/system/ install -m 0755 vlan.sh ${D}/${base_sbindir} ln -s /lib/systemd/system/vlan.service ${D}/${sysconfdir}/systemd/system/multi-user.target.wants/vlan.service }
sysconfdir:对应嵌入式/etc目录
base_sbindir:对应嵌入式/sbin目录
base_libdir:对应嵌入式/lib目录
sbindir:对应嵌入式/usr/sbin目录
libdir:对应嵌入式/usr/lib目录
注:上面的目录在我这里可能是这样的对应方式,具体实际的对应方式,需要自己去验证。查看模块编译完成后的image目录就能得到对应关系。
发表评论(对文章涉及的知识点还有疑问,可以在这里留言,老高看到后会及时回复的。)