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