Yocto构建不包括SD卡图像中的文件

问题描述:

我正在尝试在我的yocto版本中构建一个SDK到我的sysroot中。然而,当我编译我的构建,我没有得到任何错误,一切似乎工作正常。Yocto构建不包括SD卡图像中的文件

当我刷我的SD卡,并在我的主板上运行,并去寻找我的文件,他们不存在。

这里是我的.bb文件,用于安装我想要使用的SDK。

giffgaff-connectDESCRIPTION = "azure" 
HOMEPAGE = "https://github.com/Azure/azure-iot-sdk-c" 
LICENSE = "MIT" 
SECTION = "applications" 
PRIORITY = "optional" 
DEPENDS = "mono" 
LIC_FILES_CHKSUM = "file://${WORKDIR}/git/LICENSE;md5=4283671594edec4c13aeb073c219237a" 

SRCREV = "${AUTOREV}" 
SRC_URI = "git://[email protected]/condecosoftware/azure-iot-sdk-c;protocol=ssh;branch=master" 

COMPATIBLE_MACHINE = "imx6qsabresd" 

S = "${WORKDIR}" 

ALLOW_EMPTY_${PN} = "1" 

do_compile() { 
    echo libdir: ${libdir} 
    echo Files : FILES_${PN} 
    echo "compiler: ${CC}" 
    echo "sysroot: ${STAGING_DIR_TARGET}" 
    export SYSROOT=${STAGING_DIR_TARGET} 
    cd ${WORKDIR}/git/build_all/linux/ 
    ./build.sh --toolchain-file toolchain-yocto.cmake -cl --sysroot=${STAGING_DIR_TARGET} --install-path-prefix ${STAGING_DIR_TARGET} 
    cd ../.. 
    cmake -P cmake/iotsdk_linux/cmake_install.cmake 
} 

do_install() { 
    cd git 
    pwd 
    echo ${D} 
    echo ${libdir} 
    install -d 0755 ${D}${libdir} 

    install -m 0755 ./cmake/iotsdk_linux/umqtt/libumqtt.a ${D}${libdir}/ 
    install -m 0755 ./cmake/iotsdk_linux/uamqp/libuamqp.a ${D}${libdir}/ 
    install -m 0755 ./cmake/iotsdk_linux/c-utility/libaziotsharedutil.a ${D}${libdir}/ 
    install -m 0755 ./cmake/iotsdk_linux/iothub_client/libiothub_client_http_transport.a ${D}${libdir}/ 
    install -m 0755 ./cmake/iotsdk_linux/iothub_client/libiothub_client.a ${D}${libdir}/ 
    install -m 0755 ./cmake/iotsdk_linux/iothub_client/libiothub_client_amqp_ws_transport.a ${D}${libdir}/ 
    install -m 0755 ./cmake/iotsdk_linux/iothub_client/libiothub_client_amqp_transport.a ${D}${libdir}/ 
    install -m 0755 ./cmake/iotsdk_linux/iothub_client/libiothub_client_mqtt_transport.a ${D}${libdir}/ 
    install -m 0755 ./cmake/iotsdk_linux/iothub_client/libiothub_client_mqtt_ws_transport.a ${D}${libdir}/ 
    install -m 0755 ./cmake/iotsdk_linux/serializer/libserializer.a ${D}${libdir}/ 
    install -m 0755 ./cmake/iotsdk_linux/iothub_service_client/libiothub_service_client.a ${D}${libdir}/ 
} 

do_fetch_extra(){ 
    cd ${WORKDIR}/git/ 
    git submodule update --init --recursive 
} 

addtask fetch_extra after do_unpack before do_patch 

任何帮助将不胜感激。谢谢

您试过$ {WORKDIR}变量吗?该变量保存正在构建的配方的工作目录的路径名。因此,我认为每个从git获取的文件都可以从那里访问。例如:

安装-m 0755 $ {WORKDIR} /cmake/iotsdk_linux/umqtt/libumqtt.a $ {d} $ {} LIBDIR/

请让我知道,如果它的工作原理。

你可能会需要添加

PACKAGES =+ "${PN}-staticdev" 
FILES_${PN}-staticdev += "${libdir}/*.a" 

运送安装到您的每一个形象的文件。 您也可以逐个添加每个文件而不是通配符。

一些言论:

对于git的子模块,你可以使用gitsm:// URL,它将每个子模块进行初始化。

你也可以把下面的指令,以避免在配方中做一些改变目录。

S = "${WORKDIR}/git" 

顺便说一下,您可以从Intel meta-iot-cloud层查看Azure的OE配方。这是python配方,但它取决于C iot sdk,它可以鼓舞人心:

https://github.com/intel-iot-devkit/meta-iot-cloud/blob/master/recipes-azure/azure-iot-sdk/azure-iot-sdk_1.1.23.bb