libkafka编译出so文件,所依赖的库在当前目录有,但是动态链接找不到,是编译时环境变量的设置问题。
当前目录中有librdkafka.so.1,但是还是报librdkafka.so.1 => not found。
手动设置export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH可解决
参考:https://blog.csdn.net/guangyacyb/article/details/85116560
https://blog.csdn.net/naughfy/article/details/84649252
正确的编译步骤如下:
1.设置环境变量
#运行时库路径
export LD_LIBRARY_PATH=/home/librdkafka/lib:$LD_LIBRARY_PATH
#编译时链接库路径
export LIBRARY=/home/librdkafka/lib:$LIBRARY_PATH
#C++头文件包含路径
export CPLUS_INCLUDE_PATH=/home/librdkafka/include:$CPLUS_INCLUDE_PATH
#C头文件包含路径
export C_INCLUDE_PATH=/home/librdkafka/include:$C_INCLUDE_PATH
2.configure
./configure --prefix=/home/librdkafka
3.修改Makefile,添加-Wl,-rpath,./
src/makefile修改:LIB_LDFLAGS+= $(LDFLAG_LINKERSCRIPT)$(LIBNAME).lds -Wl,-rpath,./
src-cpp/Makefile修改:LIBS := -L../src -lrdkafka -lstdc++ -Wl,-rpath,./
4.运行make
5.运行make install