链接错误:在PlatformIO中找不到-lrdkafka预编译的动态库

时间:2018-07-22 23:58:23

标签: c apache-kafka esp32 platformio

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

1 个答案:

答案 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。