当前位置:   article > 正文

Linux动态装载动态库——ldd,ldconfig,ld.so.conf, ld.so.cache

ld.so.cache

一、 /usr/bin/ld 程序的运行过程

  1. 1)執行這個動作的linux程序: /usr/bin/ld
  2. 2)這個程序參考的文件為:/etc/ld.so.conf,該文件保存著ld應該搜索的so文件路徑。通常ld.so.conf.d
  3. 這個文件夾下也保存著分文件,以供合成ld.so.conf
  4. 3)該程序實際參考的文件為:/etc/ld.so.cache.這個文件會其實基本上就是對/etc/ld.so.conf 做了稍微的處理利於/usr/bin/ld程序的參考。
  5. 4)將/etc/ld.so.conf 更新到/etc/ld.so.cache.的命令: ldconfig. 使用 ldconfig -p|less可以逐步查看從/usr/bin/ld 眼裡的/etc/ld.so.cache的內容(路徑)。
  6. 5)所以往/etc/ld.so.conf內做指定的路徑,如/usr/lib等加入你需要程序搜索的動態庫.so文件,
  7. 不需要執行ldconfig更新。因為/etc/ld.so.cache中保存的就是目錄,而不是具體的so文件。
  8. 6)向/etc/ld.so.conf添加路徑。則需要調用ldconfig來更新/usr/bin/ld的搜索路徑。

二、运行时动态库的搜索路径:

  1. 動態庫的搜索路徑搜索的先後順序是:
  2. ①編譯目標代碼時指定的動態庫搜索路徑(這是通過gcc 的參數"-Wl,-rpath,"指定。當指定多個動態庫搜索路徑時,路徑之間用冒號":"分隔)
  3. ②環境變量LD_LIBRARY_PATH指定的動態庫搜索路徑(當通過該環境變量指定多個動態庫搜索路徑時,路徑之間用冒號":"分隔)
  4. ③配置文件/etc/ld.so.conf中指定的動態庫搜索路徑;
  5. ④默認的動態庫搜索路徑/lib;
  6. ⑤默認的動態庫搜索路徑/usr/lib。

三、总结

也就是說,雖然linux以裝載動態庫時搜索的路徑以/etc/ld.so.conf為主,但是,仍然有其它的方式,來構建這種裝載路徑的靈活性。仍然是遵守那種先「專」後「寬」的模式去縮短可能的搜索時間。 第一個,就是在編譯連接該程序的時候,就指定將來需要動態庫的時候搜索的位置。注意這個與當時的鏈接路徑雖然有很大的關係,但是他們的概念是不同的。 第二個,也就是在使用/etc/ld.so.conf之前,還有一個路徑設置方法就是環境變量LD_LIBRARY_PATH. 這個東西可以使用: export LD_LIBRARY_PATH=」/usr/lib/old:/opt/lib 來創建修改這個變量。 第三個,才是/etc/ld.so.conf 最後。則是系統默認路徑。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/606007
推荐阅读
相关标签
  

闽ICP备14008679号