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



我正在尝试在我的yocto构建上将SDK构建到我的系统根中。但是,当我编译我的构建时,我没有收到任何错误,一切似乎都运行良好。

当我刷新我的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

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

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

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

如果有效,请告诉我。

您可能需要

添加

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

将安装到映像中的每个文件寄送。您还可以逐个添加每个文件,而不是通配符。

一些评论:

对于 git 子模块,您可以使用 url,它将初始化每个子模块 gitsm://。

您还可以按照以下说明进行操作,以避免在配方中进行一些更改。

S = "${WORKDIR}/git"

顺便说一下,您可以从英特尔元物联网云层查看适用于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

最新更新