栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

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

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

一、 /usr/bin/ld 程序的运行过程
1)執行這個動作的linux程序:  /usr/bin/ld
2)這個程序參考的文件為:/etc/ld.so.conf,該文件保存著ld應該搜索的so文件路徑。通常ld.so.conf.d
這個文件夾下也保存著分文件,以供合成ld.so.conf
3)該程序實際參考的文件為:/etc/ld.so.cache.這個文件會其實基本上就是對/etc/ld.so.conf 做了稍微的處理利於/usr/bin/ld程序的參考。
4)將/etc/ld.so.conf 更新到/etc/ld.so.cache.的命令: ldconfig. 使用 ldconfig -p|less可以逐步查看從/usr/bin/ld 眼裡的/etc/ld.so.cache的內容(路徑)。
5)所以往/etc/ld.so.conf內做指定的路徑,如/usr/lib等加入你需要程序搜索的動態庫.so文件,
不需要執行ldconfig更新。因為/etc/ld.so.cache中保存的就是目錄,而不是具體的so文件。
6)向/etc/ld.so.conf添加路徑。則需要調用ldconfig來更新/usr/bin/ld的搜索路徑。
二、运行时动态库的搜索路径:
動態庫的搜索路徑搜索的先後順序是:
①編譯目標代碼時指定的動態庫搜索路徑(這是通過gcc 的參數"-Wl,-rpath,"指定。當指定多個動態庫搜索路徑時,路徑之間用冒號":"分隔)
②環境變量LD_LIBRARY_PATH指定的動態庫搜索路徑(當通過該環境變量指定多個動態庫搜索路徑時,路徑之間用冒號":"分隔)
③配置文件/etc/ld.so.conf中指定的動態庫搜索路徑;
④默認的動態庫搜索路徑/lib;
⑤默認的動態庫搜索路徑/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 最後。則是系統默認路徑。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/457137.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号