【问题标题】:Developing Paho-Mqtt-C Application on Host for Target having libraries在具有库的目标主机上开发 Paho-Mqtt-C 应用程序
【发布时间】:2019-06-18 08:16:31
【问题描述】:

基本上,我使用 Yocto 构建环境在我的 rootfs 中安装了 paho-mqtt-c 库。由于它已经包含在 meta-oe 层中,我只需将该配方添加到 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.

【问题讨论】:

  • 你把这样的头文件放在哪里了?它与您的源代码(您要编译的那个)在同一个文件夹中吗?它在独立文件夹中吗?我认为这是一个包含路径问题...
  • 您需要使用 bitbake 创建一个 Yocto SDK -c populate_sdk 并使用它来交叉编译您的应用程序,请参阅manual。 SDK 为图像添加默认包,但您可能需要添加一些包,请参阅this section
  • @Nayfe 遗憾的是 TI 提供的处理器 SDK 不支持 populate_sdk。如果我通过 --help 查看选项,我正在使用的编译器似乎也没有 -l 标志。你认为我应该为此写我自己的食谱吗?如果是这样,是否有我可以参考交叉编译应用程序的示例配方。我想我会在这个食谱中设置 DEPENDS = "paho-mqtt-c"。

标签: c arm cross-compiling yocto openembedded


【解决方案1】:
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}
}

这是我使用以下目录结构的配方:

忽略 lmbench 和 hello-world - 它们是 TI 教程中的示例。

注意DEPENDS = "paho-mqtt-c" 显然,-lpaho-mqtt3c 标志和 do_compile() 这次似乎起作用了。

我仍然想知道为什么我不能简单地调用 Linaro 编译器并单独编译它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-03
    • 2018-03-17
    • 2022-07-06
    相关资源
    最近更新 更多