【发布时间】:2018-09-02 14:01:48
【问题描述】:
我正在尝试使用 librdkafka 库通过 gcc 编译我的程序,
我收到这种对 sasl_something 的未定义引用的错误
//usr/local/lib/librdkafka.a(rdkafka_sasl_cyrus.o):在函数
rd_kafka_sasl_cyrus_close': /home/ilan/librdkafka-master/src/rdkafka_sasl_cyrus.c:409: undefined reference tosasl_dispose' //usr/local/lib/librdkafka.a(rdkafka_sasl_cyrus.o): 在函数rd_kafka_sasl_cyrus_recv': /home/ilan/librdkafka-master/src/rdkafka_sasl_cyrus.c:74: undefined reference tosasl_client_step' /home/ilan/librdkafka-master/src/rdkafka_sasl_cyrus.c:100:未定义对sasl_errdetail' /home/ilan/librdkafka-master/src/rdkafka_sasl_cyrus.c:112: undefined reference tosasl_getprop'的引用 /home/ilan/librdkafka-master/src/rdkafka_sasl_cyrus.c:116:未定义对sasl_getprop' /home/ilan/librdkafka-master/src/rdkafka_sasl_cyrus.c:120: undefined reference tosasl_getprop'的引用 //usr/local/lib/librdkafka.a(rdkafka_sasl_cyrus.o): 在函数rd_kafka_sasl_cyrus_client_new': /home/ilan/librdkafka-master/src/rdkafka_sasl_cyrus.c:462: undefined reference tosasl_client_new' /home/ilan/librdkafka-master/src/rdkafka_sasl_cyrus.c:484: 未定义引用sasl_client_start' /home/ilan/librdkafka-master/src/rdkafka_sasl_cyrus.c:502: undefined reference tosasl_errdetail' /home/ilan/librdkafka-master/src/rdkafka_sasl_cyrus.c:473: 未定义引用sasl_listmech' /home/ilan/librdkafka-master/src/rdkafka_sasl_cyrus.c:466: undefined reference tosasl_errstring' //usr/local/lib/librdkafka.a(rdkafka_sasl_cyrus.o): 在函数rd_kafka_sasl_cyrus_global_init': /home/ilan/librdkafka-master/src/rdkafka_sasl_cyrus.c:604: undefined reference tosasl_client_init' /home/ilan/librdkafka-master/src/rdkafka_sasl_cyrus.c:606:未定义对“sasl_errstring”的引用
我的makefile看起来像这样
LIBS = -L ../utils -lutils -L ../network -lnetwork -Wl,-Bstatic -lev -ljansson -lmpdec -lrdkafka -lrdkafka++ -lz -llz4 -lssl -lcrypto -lhiredis -Wl,- bdynamic -lm -lpthread -ldl -lcurl -lstdc++
我确定库有问题,但无法弄清楚到底是什么,
也许使用 pkg-config rdkafka 可以解决问题,但我不知道如何在这里使用它。
你能建议吗?
【问题讨论】:
-
来自 cyrus-sasl 库的符号未知。添加 -lsasl2 应该可以解决问题。
-
谢谢,确实解决了这个问题,但又造成了另一个问题
/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/libsasl2.a(otp.o): In function 'bin2hex': (.text+0xbf0): multiple definition of 'bin2hex' ../utils/libutils.a(ut_misc.o):/home/ilan/program-master/utils/ut_misc.c:181: first defined here更长,但就是这样的问题 -
我正在为您最初的问题写更详细的答案。您是否有可能在 /home/ilan/program-master/utils/ut_misc.c 中有自己的 bin2hex 函数实现?
标签: c makefile apache-kafka libraries pkg-config