2009-11-29 35 views

回答

9

接頭。 * nix鏈接器被稱爲ld。當具有動態庫的程序被鏈接時,鏈接器會添加額外的代碼來查找動態庫來解析不是靜態鏈接的符號。通常這個代碼在/ lib和/ usr/lib中查找。 LD_LIBRARY_PATH是要搜索的其他目錄的冒號分隔列表。

「ldd」是一個方便的程序,用於查看庫的位置:例如,嘗試「ldd/bin/ls」。儘管如此,它也可能意味着「裝載者」。 ;-)

編輯:

作爲一個(半)有趣的邊注:我認爲動態庫會自動消失的一天。當磁盤空間和系統內存不足時,需要它們。使用它們的性能受到影響(即符號需要被解析並且目標代碼被編輯)。在3GB內存和7秒啓動時間的現代時代,回到靜態鏈接可能是適當的。

除了每個C++程序都會奇蹟般地增長到3MB。 ;-)

+0

非常感謝:d –

+2

現代的Linux系統上的連接器本身可能會/lib/ld-linux.so .2或類似的東西。如果你從沒有參數的命令行運行它,你會得到一個很好的幫助信息。 – bdk

+1

我懷疑動態庫存在任何地方 - 它能夠通過替換一個.so文件來修補安全漏洞,對重建操作系統中使用相關庫的每個應用程序都很有幫助。 – bdonlan

2

LD_LIBRARY_PATH - 代表裝載庫路徑或有時被稱爲LOADER LIBRARY PATH