Разработка приложения Paho-Mqtt-C на хосте для Target с библиотеками - PullRequest
1 голос
/ 15 июня 2019

По сути, у меня есть библиотека paho-mqtt-c, установленная в моих rootfs с использованием среды сборки Yocto. Поскольку он уже был включен в мета-слой, мне просто нужно было добавить этот рецепт в переменную IMAGE_INSTALL_append.

Я подтвердил это, проверив следующее:

root@am65xx-evm:/usr/lib# ls | grep mqtt
libpaho-mqtt3a.so.1
libpaho-mqtt3a.so.1.0
libpaho-mqtt3as.so.1
libpaho-mqtt3as.so.1.0
libpaho-mqtt3c.so.1
libpaho-mqtt3c.so.1.0
libpaho-mqtt3cs.so.1
libpaho-mqtt3cs.so.1.0

Будучи новичком в создании кросс-скомпилированных приложений и настройке цепочек инструментов, у меня есть основной вопрос, на который я не смог точно найти ответ.

Теперь, когда на моей целевой машине установлена ​​библиотека, как мне разработать приложение на моей хост-машине под управлением Ubuntu 18.04 LTS?

Я могу выполнить apt-get install и получить ту же библиотеку, но, используя кросс-компилятор для компиляции файла C, он не может видеть библиотеку MQTT.

Например:

~/gcc-linaro-7.2.1-2017.11-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc mqtt-test.c -l paho-mqtt3c
mqtt-test.c:4:10: fatal error: MQTTClient.h: No such file or directory
 #include "MQTTClient.h"
          ^~~~~~~~~~~~~~
compilation terminated.

1 Ответ

0 голосов
/ 18 июня 2019
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"

SRC_URI = "file://mqtt-test.c \
           file://COPYING"

S = "${WORKDIR}"
TARGET_CC_ARCH += "${LDFLAGS}"

DEPENDS = "paho-mqtt-c"

do_compile() {
    ${CC} mqtt-test.c -o mqtt-test ${CFLAGS} -lpaho-mqtt3c
}

do_install() {
    install -d ${D}${bindir}
    install -m 0755 ${WORKDIR}/mqtt-test ${D}${bindir}
}

Это рецепт, который я использовал со следующей структурой каталогов: enter image description here

Игнорировать lmbench и hello-world - они были образцом из учебника TI.

Обратите внимание на DEPENDS = "paho-mqtt-c" Очевидно, флаг -lpaho-mqtt3c с do_compile(), похоже, на этот раз сработал.

Я все еще удивляюсь, почему я не мог просто вызвать компилятор Linaro и скомпилировать его отдельно.

...