Linux下指定so共享庫的加載路徑


轉載地址:https://blog.csdn.net/zorelemn/article/details/52596293,做了部分修改

  

一、庫文件的搜索路徑:

1、在配置文件/etc/ld.so.conf中指定動態庫搜索路徑(需要添加其它庫文件的路徑,在文件的最后添加具體的路徑即可 [ 如:/usr/local/lib ],添加后保存退出,然后在命令行ldconfig

2、通過環境變量LD_LIBRARY_PATH指定動態庫搜索路徑(當通過該環境變量指定多個動態庫搜索路徑時,路徑之間用冒號":"分隔)

3、在編譯目標代碼時指定該程序的動態庫搜索路徑(還可以在編譯目標代碼時指定程序的動態庫搜索路徑。 這是通過gcc 的參數"-Wl,-rpath,"指定,當指定多個動態庫搜索路徑時,路徑之間用冒號":"分隔,如:-Wl,-rpath=./表示搜索程序所在目錄,注意程序加載某個庫的名稱是寫進了二進制的,如libxxx.so.3,然后Linux看到這個先從./里找看有沒有,如果編譯時沒有指定rpath,

據說還可以通過工具對已編譯的程序或庫修改它們的rpath:patchelf --set-rpath /opt/my-libs/lib:/foo/lib:./ program)

4、默認的動態庫搜索路徑/lib

5、默認的動態庫搜索路徑/usr/lib

搜索的先后順序是:

1.編譯目標代碼時指定的動態庫搜索路徑;

2.環境變量LD_LIBRARY_PATH指定的動態庫搜索路徑;

3.配置文件/etc/ld.so.conf中指定的動態庫搜索路徑;

4.默認的動態庫搜索路徑/lib;

5.默認的動態庫搜索路徑/usr/lib。

二、Shell可執行程序命令文件搜索路徑:

1.查看所有的搜索路徑:echo $PATH

2.添加新的路徑:

1)只對當前shell窗口有效:

export PATH=$PATH:/new path

2)對所有窗口有效:

修改當前用戶的.bash_profile文件,在PATH=$PATH……后添加":/new path";

保存退出后,需要在當前窗口中執行". .bash_profile",更新配置,之后用echo $PATH顯示更新后的路徑,可以看到新加入的路徑;

注意:在重新登錄前所有新打開的shell窗口要用到新的路徑都需要執行". .bash_profile",更新配置,因為.bash_profile文件的內容在用戶登錄時就讀取了.


免責聲明!

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



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