我正在尝试让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

最佳答案

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

绝对不可能这样。它们是两种不同的体系结构。您正在运行platformio的系统很可能是Intel处理器,因此/ usr / local / lib中的所有内容都是为此而构建的,而不是ESP32。

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

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

关于c - 链接错误:在PlatformIO中找不到-lrdkafka预编译的动态库,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51470167/

10-10 13:48