【问题标题】:yocto recipe for an application that uses dlib and opencv使用 dlib 和 opencv 的应用程序的 yocto 配方
【发布时间】:2018-12-14 18:44:45
【问题描述】:

我为 dlib 制作了一个 yocto 配方,还在 local.conf 中添加了 opencv 包。 现在我想为使用 dlib 和 opencv 库的应用程序制作一个配方。我尝试了以下配方,但是当我尝试使用 bitbake application 构建它时,它会引发一些错误。 dlib recipe:

SUMMARY = "A toolkit for making real world machine learning and data analysis applications"
HOMEPAGE = "https://github.com/davisking/dlib"

LICENSE = "Boost-Software"
LIC_FILES_CHKSUM = "file://dlib/LICENSE.txt;md5=2c7a3fa82e66676005cd4ee2608fd7d2 \
                    file://dlib/external/pybind11/LICENSE;md5=beb87117af69fd10fbf9fb14c22a2e62 \
                    file://dlib/external/libpng/LICENSE;md5=243135ddedf702158f9170807cbcfb66 \
                    file://docs/docs/license.xml;md5=2e6ff4080dcb217d4d300b90e9aabb5b \
                    file://examples/LICENSE_FOR_EXAMPLE_PROGRAMS.txt;md5=57eee82829ed297e23d84de5f905afee \
                    file://examples/video_frames/license.txt;md5=127ee508b60a6be9dea8af3b441993dc \
                    file://python_examples/LICENSE_FOR_EXAMPLE_PROGRAMS.txt;md5=064f53ab40ea2b6a4bba1324149e4fde"

SRC_URI = "git://github.com/davisking/dlib.git;protocol=https"

PV = "1.0+git${SRCPV}"
SRCREV = "3b794540baeabbcd033b544230401967106d5483"

S = "${WORKDIR}/git"

do_compile() {
        cd ${S}
        cd dlib
        mkdir build
        cd build
        cmake ..
        sudo make install
}

FILES_${PN} += "/${base_prefix}"
inherit cmake

application recipe:

DESCRIPTION = "Simple application"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://application.cpp;md5=df22013877ba7d830e9993ae1d77d724"

SRC_URI = "file://application.cpp"

S = "${WORKDIR}"

do_compile() {
        ${CXX}  -std=c++11 -O3 -L${libdir}/libdlib.a -I${includedir}/dlib/ -lpthread -lX11  application.cpp ${LDFLAGS} `pkg-config --cflags --libs opencv` -o application
}

do_install() {
        install -d ${D}${bindir}
        install -m 0755 application ${D}${bindir}
}

当我尝试bitbake application时,一些errors

| application.cpp:(.text._ZN4dlib30entropy_decoder_model_kernel_5ILm257ENS_24entropy_decoder_kernel_2ELm200000ELm4EE6decodeERm[_ZN4dlib30entropy_decoder_model_kernel_5ILm257ENS_24entropy_decoder_kernel_2ELm200000ELm4EE6decodeERm]+0x1a8): undefined reference to `dlib::entropy_decoder_kernel_2::get_target(unsigned int)'
| application.cpp:(.text._ZN4dlib11pinv_helperINS_9matrix_opINS_8op_transINS_6matrixIdLl3ELl0ENS_33memory_manager_stateless_kernel_1IcEENS_16row_major_layoutEEEEEEEEEKNS3_INT_4typeEXsrSA_2NCEXsrSA_2NRENSA_16mem_manager_typeES6_EERKNS_10matrix_expISA_EEd[_ZN4dlib11pinv_helperINS_9matrix_opINS_8op_transINS_6matrixIdLl3ELl0ENS_33memory_manager_stateless_kernel_1IcEENS_16row_major_layoutEEEEEEEEEKNS3_INT_4typeEXsrSA_2NCEXsrSA_2NRENSA_16mem_manager_typeES6_EERKNS_10matrix_expISA_EEd]+0x4fc): undefined reference to `cblas_dgemm'
| application.cpp:(.text._ZN4dlib28get_serialized_frontal_facesB5cxx11Ev[_ZN4dlib28get_serialized_frontal_facesB5cxx11Ev]+0x8e9c): undefined reference to `dlib::base64::~base64()'

我可以做些什么来解决这个问题?

【问题讨论】:

    标签: opencv yocto dlib recipe


    【解决方案1】:

    将 dlib 配方更改为

    SUMMARY = "A toolkit for making real world machine learning and data analysis applications"
    HOMEPAGE = "https://github.com/davisking/dlib"
    
    LICENSE = "Boost-Software"
    LIC_FILES_CHKSUM = "file://dlib/LICENSE.txt;md5=2c7a3fa82e66676005cd4ee2608fd7d2 \
                        file://dlib/external/pybind11/LICENSE;md5=beb87117af69fd10fbf9fb14c22a2e62 \
                        file://dlib/external/libpng/LICENSE;md5=243135ddedf702158f9170807cbcfb66 \
                        file://docs/docs/license.xml;md5=2e6ff4080dcb217d4d300b90e9aabb5b \
                        file://examples/LICENSE_FOR_EXAMPLE_PROGRAMS.txt;md5=57eee82829ed297e23d84de5f905afee \
                        file://examples/video_frames/license.txt;md5=127ee508b60a6be9dea8af3b441993dc \
                        file://python_examples/LICENSE_FOR_EXAMPLE_PROGRAMS.txt;md5=064f53ab40ea2b6a4bba1324149e4fde"
    
    SRC_URI = "git://github.com/davisking/dlib.git;protocol=https"
    
    PV = "1.0+git${SRCPV}"
    SRCREV = "3b794540baeabbcd033b544230401967106d5483"
    
    S = "${WORKDIR}/git"
    
    inherit cmake
    
    EXTRA_OECMAKE += "-DDLIB_NO_GUI_SUPPORT=ON -DBUILD_SHARED_LIBS=ON"
    

    然后在您的应用程序配方中

    DESCRIPTION = "Simple application"
    LICENSE = "MIT"
    LIC_FILES_CHKSUM = "file://application.cpp;md5=df22013877ba7d830e9993ae1d77d724"
    
    inherit pkgconfig 
    DEPENDS += "dlib opencv"
    
    SRC_URI = "file://application.cpp"
    
    S = "${WORKDIR}"
    
    do_compile() {
            ${CXX} ${CXXFLAGS} -std=c++11 -O3 -I${STAGING_INCDIR}/dlib -pthread application.cpp -o application ${LDFLAGS} `pkg-config --cflags --libs opencv` -lX11 -ldlib
    }
    
    do_install() {
            install -D -m 0755 application ${D}${bindir}/application
    }
    

    【讨论】:

    • 感谢您的回答,但我的 dlib 配方有一些错误。当我尝试构建 dlib 配方时,出现以下错误:do_package: QA Issue: dlib: Files/directories were installed but not shipped in any package。完整的错误可以在这里找到:pastebin.com/4NUZm3b0
    • 另外我提到我使用的是 Yocto Project v2.2 Morty
    • 我应该添加FILES_${PN} += "/${base_prefix}" 吗?在我添加这一行之后,配方构建没有错误。但现在我对应用程序配方有一些错误。当我尝试构建应用程序配方时,出现以下错误:`致命错误:../dlib_include_path_tutorial.txt:没有这样的文件或目录`。完整的错误可以在这里找到:pastebin.com/RLTjapmf
    • /usr/lib/cmake/dlib 中除了 .cmake 文件还有其他文件吗?我认为将FILES_${PN} += "${libdir}/cmake/dlib" 附加到食谱中应该对您有用。但我想知道它可能需要更新 cmake 选项。
    • @Kai 谢谢你的回答。 Dlib 配方现在构建良好,没有错误。但现在的问题是应用程序配方。似乎没有找到 Dlib 库。这些是构建应用程序配方的错误:pastebin.com/RLTjapmf
    【解决方案2】:

    您可能需要更新配方中的许可证,否则 Khem 提供的示例将返回警告。 Boost 许可证是:

    LICENSE = "BSL-1.0"
    LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=2c7a3fa82e66676005cd4ee2608fd7d2"
    

    【讨论】:

      猜你喜欢
      • 2021-01-26
      • 2018-12-08
      • 2018-01-04
      • 2018-12-11
      • 2018-10-30
      • 2017-11-15
      • 2019-01-18
      • 2019-03-14
      • 1970-01-01
      相关资源
      最近更新 更多