用Python往kakfa读写数据,选择的是confluent-kafka 0.9.4库,在
from confluent_kafka import Consumer
时报如下异常:
应该是找不到动态链接库librdkafka.so.1,使用confluent_kafka库需要安装librdkafka>= 0.9.1,当时在安装librdkafka时用的是./configure && make && make install,这样默认是把动态库安装到/usr/local/lib下的,所以在Linux的默认共享库路径/lib和/usr/lib下找不到。因此添加的library如果不在/lib和/usr/lib里面的话,就需要往/etc/ld.so.conf文件追加library所在的路径,然后重新调用下ldconfig命令即可。
# echo "/usr/local//lib">> /etc/ld.so.conf
# ldconfig
ldconfig是一个动态链接库管理命令,其目的为了让动态链接库为系统所共享。ldconfig默认搜寻/lilb和/usr/lib,以及/etc/ld.so.conf该配置文件内所列的目录下的库文件。搜索出可共享的动态链接库,库文件的格式为:lib***.so.**,进而创建出动态装入程序(ld.so)所需的连接和缓存文件。缓存文件默认为/etc/ld.so.cache,该文件保存已排好序的动态链接库名字列表。ldconfig通常在系统启动时运行,而当用户安装了一个新的动态链接库时,就需要手工运行这个命令。往/lib和/usr/lib里面加动态库,是不用修改/etc/ld.so.conf文件的,但是添加完后需要调用下ldconfig,不然添加的library会找不到。
待安装的源码路径下的configure是一个可执行脚本,它有很多选项,使用命令./configure –help可以输出详细的选项列表。其中--prefix选项是配置安装的路径,如果不配置该选项,安装后可执行文件默认放在/usr/local/bin,库文件默认放在/usr/local/lib,配置文件默认放在/usr/local/etc,其它的资源文件放在/usr /local/share。