无法构建,因为配方 sysroot 中缺少依赖项 - yocto
Posted
技术标签:
【中文标题】无法构建,因为配方 sysroot 中缺少依赖项 - yocto【英文标题】:Unable to build as dependencies are missing in recipe-sysroot - yocto 【发布时间】:2020-07-14 05:37:49 【问题描述】:我正在尝试使用 Yocto (Rocko) 为我的 64 位 Armv8-A 构建 mxnet 1.6.0。 首先,我从https://downloads.apache.org/incubator/mxnet/1.6.0/ 下载了mxnet。 我将下载的 tar 保存在其中一层的文件夹中。我已将该 tar 文件包含在我的 mxnet.bb 文件中,如下所示。
mxnet.bb
SUMMARY = "MXNET Package"
SECTION = "libs"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://$COMMON_LICENSE_DIR/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
PN = 'mxnet'
PV = '1.6.0'
DEPENDS = "openblas opencv gtest gperftools"
SRC_URI := " \
file://apache-mxnet-src-1.6.0-incubating.tar.gz"
SRC_URI[md5sum] = "76802d6b14cd45c27f063b2bba3c9a14"
S := "$WORKDIR/apache-$PN-src-$PV-incubating"
inherit cmake pkgconfig
OECMAKE_GENERATOR = "Unix Makefiles"
EXTRA_OECMAKE += " -DUSE_SSE=OFF \
-DUSE_CUDA=OFF \
-DUSE_OPENCV=ON \
-DUSE_OPENMP=ON \
-DUSE_MKL_IF_AVAILABLE=OFF \
-DUSE_SIGNAL_HANDLER=ON \
-DUSE_LAPACK=OFF"
然后我使用 bitbake mnxet 命令构建了它。
我收到以下错误。
错误:
-- Detecting CXX compiler ABI info
| -- Detecting CXX compiler ABI info - done
| -- Detecting CXX compile features
| -- Detecting CXX compile features - done
| -- CMAKE_CROSSCOMPILING TRUE
| -- CMAKE_HOST_SYSTEM_PROCESSOR x86_64
| -- CMAKE_SYSTEM_PROCESSOR aarch64
| -- CMAKE_SYSTEM_NAME Linux
| -- CMake version '3.14.1' using generator 'Unix Makefiles'
| -- Performing Test SUPPORT_CXX11
| -- Performing Test SUPPORT_CXX11 - Success
| -- Performing Test SUPPORT_CXX0X
| -- Performing Test SUPPORT_CXX0X - Success
| -- Determining F16C support
| -- Performing Test COMPILER_SUPPORT_MF16C
| -- Performing Test COMPILER_SUPPORT_MF16C - Failed
| -- Could not find OpenBLAS include. Turning OpenBLAS_FOUND off
| -- Could not find OpenBLAS lib. Turning OpenBLAS_FOUND off
| CMake Error at cmake/Modules/FindOpenBLAS.cmake:82 (MESSAGE):
| Could not find OpenBLAS
| Call Stack (most recent call first):
| cmake/ChooseBlas.cmake:42 (find_package)
| CMakeLists.txt:310 (include)
|
|
| -- Configuring incomplete, errors occurred!
我检查了build/tmp/work/aarch64-poky-linux/openblas/0.3.5-r0/image/opt/openblas/lib
并找到了.so 和.a 文件。
我注意到在
build/tmp/work/aarch64-poky-linux/mxnet/1.6.0-r0/recipe-sysroot/lib64
,
没有 libopenblas.so
或 openblas 文件夹。
我也查了build/tmp/sysroots-components/aarch64/openblas
发现里面只有sysroot-providers
,没有opt/openblas/lib
或任何opt或lib文件夹(如上所述,我在openblas的图像文件夹中找不到文件)。
那么,问题是,如何在 mxnet 中将 openblas 添加到我的 recipe-sysroot 中?这样它就不应该抛出找不到openblas错误?
附言只有当我的 .so 文件存在于 /opt/openblas/lib 路径中时,我才能构建 openblas。否则,如果我尝试将 .so 文件放在 /lib 文件夹中,它会给我一个 Files/directories were installed but not shipped in any package
错误。
【问题讨论】:
【参考方案1】:你可以尝试添加
FILES_$PN = "$libdir/libmxnet.so"
到食谱。
【讨论】:
我的构建甚至没有到do_package
。错误在do_compile
阶段,似乎无法找到openblas。当我从源代码执行 cmake 时,我能够通过将 /opt/openblas/lib/*
处理到 /usr/lib64
和 /opt/openblas/include/*
到 /usr/include
来解决这个问题以上是关于无法构建,因为配方 sysroot 中缺少依赖项 - yocto的主要内容,如果未能解决你的问题,请参考以下文章
Cordova 构建错误:相机插件缺少 android.support.v4 库依赖项