【问题标题】:Yocto - Files/directories were installed but not shipped in any packageYocto - 文件/目录已安装但未在任何包中提供
【发布时间】:2019-12-08 04:51:23
【问题描述】:

我正在使用 Yocto 安装 clBLAS 库 (https://github.com/clMathLibraries/clBLAS),使用配方 https://github.com/CogentEmbedded/meta-opencl/blob/master/meta-ocl-common/recipes-graphics/clblas/clblas_git.bb

但我每次都收到以下警告,并且构建的图像中不存在 .so 文件。

WARNING: QA Issue: clblas: Files/directories were installed but not shipped in any package:
  /usr/lib
  /usr/lib/libclBLAS.so.2.12.0
  /usr/lib/libclBLAS.so.2
  /usr/lib/libclBLAS.so
  /usr/lib/.debug
  /usr/lib/pkgconfig
  /usr/lib/cmake
  /usr/lib/.debug/libclBLAS.so.2.12.0
  /usr/lib/pkgconfig/clBLAS.pc
  /usr/lib/cmake/clBLAS
  /usr/lib/cmake/clBLAS/clBLASTargets-debug.cmake
  /usr/lib/cmake/clBLAS/clBLASConfigVersion.cmake
  /usr/lib/cmake/clBLAS/clBLASTargets.cmake
  /usr/lib/cmake/clBLAS/clBLASConfig.cmake
Please set FILES such that these items are packaged. Alternatively if they are unneeded, avoid installing them or delete them within do_install.
clblas: 14 installed and not shipped files. [installed-vs-shipped]

如何克服此警告并让 .so 文件出现在目标的 /usr/lib 文件夹中?

【问题讨论】:

    标签: yocto


    【解决方案1】:

    以下行添加到您的clblas_git.bb

     FILES_${PN} += "${libdir}/*"
     FILES_${PN}-dev = "${libdir}/* ${includedir}"
    

    你会得到很好的解释here

    【讨论】:

    • 谢谢@ Siva.v,你能告诉我为什么我们需要添加包含目录
    • 答案不是一个很好的答案,当然也不是完美的。它只治疗症状,特别是 INSANE_SKIP 意味着将跳过测试,但潜在的问题将继续存在。并且应该自动进行正确的文件打包。如果您可以运行 'bitbake -e clblas' 并发布输出(例如到 pastebin),我们也许能够更好地诊断为什么它默认不工作。
    • 如果有人能解释一下这个解决方案的工作原理会很有帮助
    【解决方案2】:

    问题是在构建过程中未正确考虑 multilib,查看 clBLAS 中的 cmake 文件,它使用 CMake 变量构建 multilib 路径 SUFFIX_LIB 和 yocto 配方将其设置为空 here 但它没有编码多库路径的 yocto 逻辑。一个潜在的修复方法如下所示

    --- clblas_git.bb.org   2019-12-07 12:41:56.784649031 -0800
    +++ clblas_git.bb       2019-12-07 12:42:25.317982206 -0800
    @@ -16,7 +16,7 @@ S = "${WORKDIR}/git/src"
    
    inherit cmake pythonnative
    
    -EXTRA_OECMAKE += "-DSUFFIX_LIB= -DUSE_SYSTEM_GTEST=ON -DBUILD_TEST=OFF -DPREBUILT_CLT_PATH=${WORKDIR}/clt"
    +EXTRA_OECMAKE += "-DSUFFIX_LIB=${@d.getVar('baselib', True).replace('lib', '')} -DUSE_SYSTEM_GTEST=ON -DBUILD_TEST=OFF -DPREBUILT_CLT_PATH=${WORKDIR}/clt"
    
    DEPENDS += "virtual/opencl"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-03
      • 1970-01-01
      • 2012-01-27
      • 2023-03-15
      • 2023-03-23
      • 2020-09-30
      • 2014-04-27
      相关资源
      最近更新 更多