linux ldd -r xx.so not found問題——之librdkafka編譯

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

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章