./../lib/librdkafka.so: undefined reference to ‘deflateBound@ZLIB_1.2.0‘ /usr/1ib64/1ibssl.so.10: un

Linux C++ 链接kfaka动态库,编译报错

一.报错信息

./…/lib/librdkafka.so: undefined reference to ‘deflateBound@ZLIB_1.2.0‘
/usr/1ib64/1ibssl.so.10: undefined reference to ‘memcpy@GLIBC_2.14‘

编译报错

二.分析报错

1.根据上图的报错提示,可以看出是链接时librdkafka.so和1ibssl.so.10依赖的函数定义未找到,同时该函数依赖于ZLIB_1.2.0 、GLIBC_2.14。

2.查看当前系统的GLIBC库

strings /lib/tls/libc.so.6 | grep GLIBC

执行结果并没有匹配的GLIBC_2.14,所以报错了。

三、解决方法

1.升级GLIBC

这种方法容易导致系统崩溃,不建议在生产环境上升级。

2.降librdkafka的版本

这个问题的本质就是,给的librdkafka.so的版本与当前系统不匹配,既然不匹配,就找个匹配的。

2.1 下载历史版本的librdkafka

librdkafka

不知道怎么找版本的话,就选大版本一个一个试,我尝试了最新版本、v2.0.0、v1.0.0(如果系统比较老,优先选1.0.0)。
https://github.com/confluentinc/librdkafka/releases/tag/v1.0.0

2.2 源码编译,生成librdkafka.so 和librdkafka++.so

1.解压

tar librdkafka-1.0.0.tar.gz

2.执行命令

cd librdkafka-1.0.0
./configure
make
make install

3.拷贝librdkafka.so 和librdkafka++.so到需要的文件夹下
执行完上面的命令,src和src-cpp分别会出现librdkafka.so 和librdkafka++.so,拷贝librdkafka.so 和librdkafka++.so到需要的文件夹下,重新编译自己的程序。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值