複製鏈接
請複製以下鏈接發送給好友

ld.so

鎖定
ld.so是Unix或類Unix系統上的動態鏈接器。
中文名
ld.so
分    類
計算機科學

ld.so常見變體

ld.so常見的有兩個變體:
  • ld.so針對a.out格式的二進制可執行文件
  • ld-linux.so針對ELF格式的二進制可執行文件

ld.so加載順序

當應用程序需要使用動態鏈接庫裏的函數時,由ld.so負責加載。搜索動態鏈接庫的順序依此是
  • 環境變量LD_AOUT_LIBRARY_PATH(a.out格式)、LD_LIBRARY_PATH(ELF格式);在Linux中,LD_PRELOAD指定的目錄具有最高優先權。
  • 緩存文件/etc/ld.so.cache。此為上述環境變量指定目錄的二進制索引文件。更新緩存的命令是ldconfig。
  • 默認目錄,先在/lib中尋找,再到/usr/lib中尋找 [1] 

ld.so安全性

駭客可以通過修改上述環境變量,讓具有特權的應用程序加載惡意動態鏈接庫,從而導致攻擊行為。所以,對於setuid/setgid應用程序,動態鏈接器只在默認目錄中尋找已被setgid的動態鏈接庫

ld.so動態鏈接庫

動態鏈接庫是微軟公司在微軟視窗操作系統中實現共享函數庫概念的一種實現方式。這些庫函數的擴展名是.DLL、.OCX(包含ActiveX控制的庫)或者.DRV(舊式的系統驅動程序) [2] 
所謂動態鏈接,就是把一些經常會共用的代碼(靜態鏈接的OBJ程序庫)製作成DLL檔,當可執行文件調用到DLL檔內的函數時,Windows操作系統才會把DLL檔加載存儲器內,DLL檔本身的結構就是可執行檔,當程序有需求時函數才進行鏈接。透過動態鏈接方式,存儲器浪費的情形將可大幅降低。靜態鏈接庫則是直接鏈接到可執行文件。
DLL的文件格式與視窗EXE文件一樣——也就是説,等同於32位視窗的可移植執行文件(PE)和16位視窗的New Executable(NE)。作為EXE格式,DLL可以包括源代碼、數據和資源的多種組合。
在更廣泛的意義上説,任何同樣文件格式的電腦文件都可以稱作資源DLL。這樣的DLL的例子有擴展名為ICL的圖標庫、擴展名為FON和FOT的字體文件。
參考資料
  • 1.    王敏, 邵定宏, 陸金桂. 動態鏈接庫技術及其應用實例[J]. 微計算機信息, 2006, 22(27):272-274.
  • 2.    洪添勝, 李永剛, 羅錫文,等. LabVIEW中數據採集動態鏈接庫的設計及應用[J]. 計算機測量與控制, 2000, 8(4):21-22.