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

时间:2017-10-19 15:29:24

标签: yocto bitbake

我正在尝试在我的yocto构建中将SDK构建到我的sysroot中。然而,当我编译我的构建时,我没有得到任何错误,一切似乎都运行正常。

当我刷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://git@bitbucket.org/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

任何帮助都将非常感谢。谢谢

2 个答案:

答案 0 :(得分:2)

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

install -m 0755 $ {WORKDIR} /cmake/iotsdk_linux/umqtt/libumqtt.a $ {D} $ {libdir} /

如果有效,请告诉我。

答案 1 :(得分:-1)

您可能需要添加

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