lrdkafka预编译动态库

9jyewag0  于 2021-06-08  发布在  Kafka
关注(0)|答案(1)|浏览(580)

我想让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

ozxc1zmp

ozxc1zmp1#

您正在尝试将为您的系统构建的Kafka库与esp32程序链接。
这绝对不行。它们是两种不同的架构。运行platformio的系统很可能是一个英特尔处理器,/usr/local/lib中的任何东西都是为此而构建的,而不是为esp32而构建的。
您可能正在linux上运行,因此kafka库是为linux构建的。esp32不运行linux。所以Kafka库不可能在esp32上运行,即使它是为esp32编译的,但事实并非如此。
Kafka的设计不是要在esp32上运行。如果你想让你的esp32与kafka系统交互,你需要找到一个与kafka兼容的客户机,该客户机是为在esp32上运行而设计的。 librdkafka 与esp32完全不兼容。

相关问题