0

我正在尝试让 Kafka 使用 PlatformIO 在 Esp32 上工作。

我尝试使用我的 platformio.ini 文件中表达的构建标志将 C 库链接到在 PlatformIO 中构建的项目。我正在使用 librdkafka 库。librdkafka.so 文件的位置在 /usr/local/lib 中,但是每当我使用 plaformio 中的链接库构建项目时,都会出现以下错误:

platformio/packages/toolchain-xtensa32/bin/../lib/gcc/xtensa-esp32-elf/5.2.0
/../../../../xtensa-esp32-elf/bin/ld: cannot find -lrdkafka

platformio.ini 文件:

[env:featheresp32]
platform = espressif32
board = featheresp32
framework = espidf
build_flags =
   -L/usr/local/lib
   -I/usr/local/include/librdkafka
   -lrdkafka

在 PlatformIO 之外,我使用以下命令成功地将 librdkafka 链接到 main.c 项目文件: gcc main.c -L/usr/local/lib -l:librdkafka.so -lz -lpthread -lrt -I/usr/local/include/librdkafka

4

1 回答 1

1

您正在尝试为您的系统构建的 Kafka 库与您的 ESP32 程序链接。

这绝对不可能。它们是两种不同的架构。您正在运行 platformio 的系统很可能是英特尔处理器,因此 /usr/local/lib 中的任何内容都是为此而构建的,而不是为 ESP32 构建的。

您可能在 Linux 上运行,因此 Kafka 库是为 Linux 构建的。ESP32 不运行 Linux。所以 Kafka 库不可能在 ESP32 上运行,即使它是为它编译的,但事实并非如此。

Kafka 并非设计为在 ESP32 上运行。如果您希望您的 ESP32 与 Kafka 系统交互,您需要找到一个与 Kafka 兼容的客户端,该客户端旨在在 ESP32 上运行。librdkafka绝不与 ESP32 兼容。

于 2018-07-23T02:09:43.450 回答