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