构建时对 sasl_x 的未定义引用
Undefined reference to sasl_x when build
我正在尝试使用 librdkafka 库用 gcc 编译我的程序,
我收到这种未定义引用 sasl_something
的错误
//usr/local/lib/librdkafka.a(rdkafka_sasl_cyrus.o): In function rd_kafka_sasl_cyrus_close':
/home/ilan/librdkafka-master/src/rdkafka_sasl_cyrus.c:409: undefined reference to
sasl_dispose'
//usr/local/lib/librdkafka.a(rdkafka_sasl_cyrus.o): In function rd_kafka_sasl_cyrus_recv':
/home/ilan/librdkafka-master/src/rdkafka_sasl_cyrus.c:74: undefined reference to
sasl_client_step'
/home/ilan/librdkafka-master/src/rdkafka_sasl_cyrus.c:100: undefined reference to sasl_errdetail'
/home/ilan/librdkafka-master/src/rdkafka_sasl_cyrus.c:112: undefined reference to
sasl_getprop'
/home/ilan/librdkafka-master/src/rdkafka_sasl_cyrus.c:116: undefined reference to sasl_getprop'
/home/ilan/librdkafka-master/src/rdkafka_sasl_cyrus.c:120: undefined reference to
sasl_getprop'
//usr/local/lib/librdkafka.a(rdkafka_sasl_cyrus.o): In function rd_kafka_sasl_cyrus_client_new':
/home/ilan/librdkafka-master/src/rdkafka_sasl_cyrus.c:462: undefined reference to
sasl_client_new'
/home/ilan/librdkafka-master/src/rdkafka_sasl_cyrus.c:484: undefined reference to sasl_client_start'
/home/ilan/librdkafka-master/src/rdkafka_sasl_cyrus.c:502: undefined reference to
sasl_errdetail'
/home/ilan/librdkafka-master/src/rdkafka_sasl_cyrus.c:473: undefined reference to sasl_listmech'
/home/ilan/librdkafka-master/src/rdkafka_sasl_cyrus.c:466: undefined reference to
sasl_errstring'
//usr/local/lib/librdkafka.a(rdkafka_sasl_cyrus.o): In function rd_kafka_sasl_cyrus_global_init':
/home/ilan/librdkafka-master/src/rdkafka_sasl_cyrus.c:604: undefined reference to
sasl_client_init'
/home/ilan/librdkafka-master/src/rdkafka_sasl_cyrus.c:606: undefined reference to `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 可以解决问题,但我不知道如何在这里使用它。
能请教一下吗?
Cyryus SASL 未链接。库通常命名为 sasl2,因此添加 -lsasl2 应该可以解决问题。
我刚刚在我的系统 (Gentoo Linux) 上安装了 rdkafka,它的 pkg-config 文件包含 -lsasl2。所以是的。使用 pkg-config 也应该可以解决所描述的问题。
查看如何在 makefile here 中使用 pkg-config。
要同时获取私人图书馆,请使用:
LDFLAGS += `pkg-config rdkafka --libs --static`
我正在尝试使用 librdkafka 库用 gcc 编译我的程序,
我收到这种未定义引用 sasl_something
的错误//usr/local/lib/librdkafka.a(rdkafka_sasl_cyrus.o): In function
rd_kafka_sasl_cyrus_close': /home/ilan/librdkafka-master/src/rdkafka_sasl_cyrus.c:409: undefined reference to
sasl_dispose' //usr/local/lib/librdkafka.a(rdkafka_sasl_cyrus.o): In functionrd_kafka_sasl_cyrus_recv': /home/ilan/librdkafka-master/src/rdkafka_sasl_cyrus.c:74: undefined reference to
sasl_client_step' /home/ilan/librdkafka-master/src/rdkafka_sasl_cyrus.c:100: undefined reference tosasl_errdetail' /home/ilan/librdkafka-master/src/rdkafka_sasl_cyrus.c:112: undefined reference to
sasl_getprop' /home/ilan/librdkafka-master/src/rdkafka_sasl_cyrus.c:116: undefined reference tosasl_getprop' /home/ilan/librdkafka-master/src/rdkafka_sasl_cyrus.c:120: undefined reference to
sasl_getprop' //usr/local/lib/librdkafka.a(rdkafka_sasl_cyrus.o): In functionrd_kafka_sasl_cyrus_client_new': /home/ilan/librdkafka-master/src/rdkafka_sasl_cyrus.c:462: undefined reference to
sasl_client_new' /home/ilan/librdkafka-master/src/rdkafka_sasl_cyrus.c:484: undefined reference tosasl_client_start' /home/ilan/librdkafka-master/src/rdkafka_sasl_cyrus.c:502: undefined reference to
sasl_errdetail' /home/ilan/librdkafka-master/src/rdkafka_sasl_cyrus.c:473: undefined reference tosasl_listmech' /home/ilan/librdkafka-master/src/rdkafka_sasl_cyrus.c:466: undefined reference to
sasl_errstring' //usr/local/lib/librdkafka.a(rdkafka_sasl_cyrus.o): In functionrd_kafka_sasl_cyrus_global_init': /home/ilan/librdkafka-master/src/rdkafka_sasl_cyrus.c:604: undefined reference to
sasl_client_init' /home/ilan/librdkafka-master/src/rdkafka_sasl_cyrus.c:606: undefined reference to `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 可以解决问题,但我不知道如何在这里使用它。
能请教一下吗?
Cyryus SASL 未链接。库通常命名为 sasl2,因此添加 -lsasl2 应该可以解决问题。
我刚刚在我的系统 (Gentoo Linux) 上安装了 rdkafka,它的 pkg-config 文件包含 -lsasl2。所以是的。使用 pkg-config 也应该可以解决所描述的问题。
查看如何在 makefile here 中使用 pkg-config。
要同时获取私人图书馆,请使用:
LDFLAGS += `pkg-config rdkafka --libs --static`