赞
踩
- 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 最後。則是系統默認路徑。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。