linux 加載當前目錄的動態庫


linux的excutable在執行的時候缺省是先搜索/lib和/usr/lib這兩個目錄,然后按照ld.so.conf里面的配置搜索絕對路徑,
linux缺省是不會在當前目錄搜索動態庫的。windows加載動態庫的時候,缺省是首先加載本地目錄下的動態庫,然后再搜索windows/system和windows/system32目錄
windows的動態庫搜索順序,雖然有可能會造成潛在的混亂,但是對於開發和測試無疑是比較方便的,尤其是debug和release版本的動態庫需要經常切換進行測試的時候。
linux的動態庫搜索順序雖然可以說成是比較嚴謹,但是相對來說也比較呆板,有時候會造成不便。

其實,linux也可以支持“加載當前目錄的動態庫”。只要設置合適的環境變量LD_LIBRARY_PATH就可以了。設置方法有以下三種:

1、臨時修改,只在 當前terminal有效

在terminal中執行:export LD_LIBRARY_PATH=./
注意:這里不一定有效,怎么辦,指定全路徑 export LD_LIBRARY_PATH=/home/xxx/xxx/xxx

2、讓當前帳號以后都優先加載當前目錄的動態庫

修改~/.bash_profile在文件末尾加上兩行: LD_LIBRARY_PATH=./ 和 export LD_LIBRARY_PATH
注意:這里不一定有效,怎么辦,指定全路徑 export LD_LIBRARY_PATH=/home/xxx/xxx/xxx

3、讓所有帳號從此都優先加載當前目錄的動態庫

修改/etc/profile在文件末尾加上兩行: LD_LIBRARY_PATH=./ 和 export LD_LIBRARY_PATH
注意:這里不一定有效,怎么辦,指定全路徑 export LD_LIBRARY_PATH=/home/xxx/xxx/xxx

PS:修改ld.so.conf不能達到我們的目的,因為ld.so.conf只支持絕對路徑。
注意:這里不一定有效,怎么辦,指定全路徑 export LD_LIBRARY_PATH=/home/xxx/xxx/xxx。

 

如果還是加載不了,請查看相關so 屬性,

設置屬於

sudo chmod 777 -R /*

如果還是加載不了,再次查看相關so依賴

linux下查看動態鏈接庫依賴關系的命令
x86:
ldd    *.so

arm:
arm-linux-readelf    -d    *.so

 

轉自:https://blog.csdn.net/q610098308/article/details/100081358


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM