yocto常见编译ERROR和WARNING
-
QA Issue: /usr/sbin/test.sh contained in package testapp requires /bin/bash, but no providers found in RDEPENDS:testapp
- 缺少
bash
的依赖 - 解决方法
- 在目标配方文件的
DEPENDS
和RDEPENDS:${PN}
追加bash
- 在目标配方文件的
- 缺少
-
QA Issue: /usr/bin/test contained in package testapp requires libtest.so.1
- 缺少对应.so依赖
- 解决方法
- 检查目标库是否存在于编译目录中, 可能是未添加编译目标或者目标库未成功安装
-
ERROR: testapp-1.0-r0 do_package: QA Issue: testapp: Files/directories were installed but not shipped in any package:/include /include/testapp.h
- bb配方文件缺少打包路径
- 解决方法
- 检查目标配方文件中include文件是否安装在工作目录中
FILES:${PN}-dev = "${includedir}" (include路径) FILES:${PN} = "${base_libdir} ${libdir} ${bindir} ${datadir}"
- 根据实际安装目录添加(目录名字参考
poky/meta/conf/bitbake.conf
)
- 检查目标配方文件中include文件是否安装在工作目录中
-
ERROR: testapp-1.0-r0 do_prepare_recipe_sysroot: The file /usr/lib/libtest.so is installed by both test1 and test2
test1
和test2
两个包都包含libtest.so
,造成一个重复编译。- 解决方法
- 在配方文件中,将
DEPENDS
中冲突包删除
- 在配方文件中,将
-
error: File '<file>' in package '<package>' doesn't have GNU_HASH
LDFLAGS
默认传递链接参数-Wl,–hash-style=gnu
,但不传递不使用此链接参数的编译库- 解决方法
- 编译动态库添加
-Wl,–hash-style=gnu
参数进行编译 - 修改默认链接参数为sysv, 在输出目录的
conf/local.conf
文件中添加LINKER_HASH_STYLE = “sysv”
- 忽略该错误, 在配方文件中添加
INSANE_SKIP:${PN} += “ldflags”
- 编译动态库添加
-
error :non -dev/-dbg/nativesdk- package contains symlink .so: <packagename> path '<path>' [dev-so]
- release包中包含符号链接
- 解决方法
- 忽略该错误,在配方文件中添加INSANE_SKIP:${PN} += “dev-so”
- 在配方文件中添加更加详细的打包描述
FILES:${PN}-dev = "${includedir} ${libdir}/lib*.so" FILES:${PN} = "${libdir}/lib*.so.*.*.*"
-
error: <packagename> requires <files>, but no providers in its RDEPENDS [file-rdeps]
- 编译链接依赖的库未被包含
- 解决方法
- 如果编译
LDFLAGS
在编译时指定了-lsonamea
,那么被依赖目标动态库必须被添加到RDEPENDS
中 - 假如添加后错误仍然存在, 则使用使用链接参数
-Wl,-soname=libxxx.so
编译依赖动态库
- 如果编译
-
error: File '<file>' from <recipename> was already stripped, this will prevent future debugging! [already-stripped]
- 已安装的可执行文件或动态库使用
strip
命令删除调试信息 - 解决方法
- 忽略该错误, 在配方文件中添加
INSANE_SKIP:${PN} += “already-stripped”
- 忽略该错误, 在配方文件中添加
- 已安装的可执行文件或动态库使用
-
Error: Unable to find a match: <packagename>
- 由于包没有任何输出,或者输出只有头文件和/或静态库文件
- 解决方法
- 忽略该错误, 在配方文件中添加
ALLOW_EMPTY:${PN} = “1”
- 将该包移除
do_rootfs
目标列表
- 忽略该错误, 在配方文件中添加
-
WARNING: testapp-0.0.1-r0 do_populate_lic: QA Issue: testapp: No generic license file exists for: userlicense.txt in any provider [license-exists]
- 这个
warning
的主要原因是因为配方没有检索到license
- 解决方法
- 添加同名
license
userlicense.txt
文件到配方文件能够直接索引的目录- 默认添加到配方文件同目录,或者添加到外部源(配方文件已经指定)目录
- 添加非同名文件(
otherlicense.txt
)的某行到某行LICENSE = "userlicense" LIC_FILES_CHKSUM = "file://otherlicense.txt;beginline=1;endline=11;md5=xxxxxxxxxxxxxxxxxxx" NO_GENERIC_LICENSE[userlicense] = "otherlicense.txt"
- 注意一定要在
NO_GENERIC_LICENSE
变量中显式指定具体是那个文件充当了license
文件
- 注意一定要在
- 添加同名
- 这个
-
opencv
编译问题
[yocto]yocto编译opencv4.5编译报错