2017-10-19 70 views
0

我正在嘗試在我的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 

任何幫助將不勝感激。謝謝

回答

2

您試過$ {WORKDIR}變量嗎?該變量保存正在構建的配方的工作目錄的路徑名。因此,我認爲每個從git獲取的文件都可以從那裏訪問。例如:

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

請讓我知道,如果它的工作原理。

-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