裝入時動態鏈結是指:使用者源程式編譯後,得到一組目標模組,在裝入記憶體時,採用邊裝入,邊鏈結的方式。即在裝入乙個目標模組時,若發生乙個外部模事件,將引起裝入程式去找出相應的外部目標模組,並將他裝入記憶體。
優點主要分為兩點:
(1)便於修改和更新:對於靜態鏈結,如果需要修改獲更新某個目標模組,需要重新開啟裝入模組,這不僅僅是效率問題,而在很多時候甚至是不可能的。而採用動態鏈結方式,由於個目標模組是分開存放的,所以要修改或更新各目標模組是件非常容易地事情。
靜態鏈結 裝入時動態鏈結和執行時動態鏈結
靜態鏈結 經編譯後所得到的三個目標模組a b c,他們的長度分別為 l m n。在模組a中,有 一條語句call b,用於呼叫模組b。在模組b中,有一條語句call c,用於呼叫模組c。b和c都屬於外部 對相對位址進行修改 乙個裝入程式後,模組b和c的起始位址不再是0,而是l和l m,此時需修改b和...
動態裝入器(dynamic loader)
動態裝入器 dynamic loader 負責將動態可執行程式和所有必需的共享庫一起裝入,以使它們能正確執行。lib64 ld linux x86 64.so.2 即是64位linux系統下的動態裝入器 動態裝入器找到共享庫要依靠兩個檔案 etc ld.so.conf和 etc ld.so.cach...
程式的裝入和鏈結
編譯 鏈結 裝入 編譯 預處理 編譯 優化 彙編 靜態鏈結 動態鏈結 1 靜態鏈結 2 裝入時動態鏈結 3 執行時動態鏈結 裝入 靜態裝入 動態裝入 1 絕對裝入方式 這種方式在編譯的時候就會產生絕對位址 程式中的邏輯位址就是實際的實體地址 在裝入的時候不需要對位址和資料進行修改。缺點 只能將目標模...