我正试图让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
答案 0 :(得分:1)
您正在尝试将为系统构建的Kafka库与ESP32程序链接。
这绝对不可能。它们是两种不同的体系结构。您正在运行platformio的系统很可能是Intel处理器,因此/ usr / local / lib中的所有内容都是为此而构建的,而不是针对ESP32。
您可能正在Linux上运行,因此Kafka库是为Linux构建的。 ESP32未运行Linux。因此,即使它是针对ESP32编译的,Kafka库也无法在ESP32上运行。
Kafka并非设计为在ESP32上运行。如果您希望ESP32与Kafka系统交互,则需要找到一个与Kafka兼容的客户端,该客户端旨在在ESP32上运行。 librdkafka
完全不兼容ESP32。