【问题标题】:Yocto build not including files in sdcard imageYocto 构建不包括 sdcard 映像中的文件
【发布时间】:2017-10-19 15:29:23
【问题描述】:

我正在尝试在我的 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

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

【问题讨论】:

    标签: yocto bitbake


    【解决方案1】:

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

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

    如果有效,请告诉我。

    【讨论】:

      【解决方案2】:

      你可能需要添加

      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

      【讨论】:

        猜你喜欢
        • 2023-03-12
        • 1970-01-01
        • 2018-01-02
        • 1970-01-01
        • 2017-10-11
        • 2017-05-22
        • 1970-01-01
        • 2018-05-13
        • 2018-01-30
        相关资源
        最近更新 更多