[yocto]yocto常见编译ERROR和WARNING

yocto常见编译ERROR和WARNING

  • QA Issue: /usr/sbin/test.sh contained in package testapp requires /bin/bash, but no providers found in RDEPENDS:testapp

    • 缺少 bash的依赖
    • 解决方法
      • 在目标配方文件的 DEPENDSRDEPENDS:${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
  • ERROR: testapp-1.0-r0 do_prepare_recipe_sysroot: The file /usr/lib/libtest.so is installed by both test1 and test2

    • test1test2两个包都包含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编译报错

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值