回覆列表
-
1 # 使用者2149618505464
-
2 # 藍風24
動態連結動態連結與靜態連結對比編輯動態連結靜態連結優點:
①程式碼裝載速度快,執行速度略比動態連結庫快;
②只需保證在開發者的計算機中有正確的.LIB檔案,在以二進位制形式釋出程式時不需考慮在使用者的計算機上.LIB檔案是否存在及版本問題,可避免DLL地獄等問題
-
3 # 使用者219515082544
靜態連結是指在程式執行之前,先將各自目標模組及它們所需的庫函式,連結成一個完整的裝入模組,以後不再拆開的連結方式。
將幾個目標連結裝配成一個裝入模組時,需解決以下兩個問題:
將相對地址進行修改。即將除第一個模組外的相對地址修改成裝入模組中的相應的相對地址。
變換外部呼叫符號。即將每個模組中所用的外部呼叫符號,都變換為相對地址。
靜態連結是由連結器在連結時將庫的內容加入到可執行程式中的做法。連結器是一個獨立程式,將一個或多個庫或目標檔案(先前由編譯器或彙編器生成)連結到一塊生成可執行程式。靜態連結的最大缺點是生成的可執行檔案太大,需要更多的系統資源,在裝入記憶體時也會消耗更多的時間。像Unixld程式這樣的靜態連結器(staticlinker)以一組可重定位的目標檔案作為輸入,生成一個完全連線的可以載入和執行的可執行目標檔案作為輸出。輸入的可重定位目標檔案由各種不同的程式碼和資料節(section)組成。指令在一個節中,初始化的全域性變數在一個節中;而未初始化的變數在另外一個節中。動態連結英文是DynamicLinking,他是使得不同的程式開發者和部門能夠相對獨立地開發和測試自己的程式模組,從某種意義上來講大大促進了程式的開發效率,原先限制程式的規模也隨之擴大。但是慢慢地靜態連結的諸多缺點也逐步暴露出來,比如浪費記憶體和磁碟空間、模組更新困難等問題,使得人們不得不尋找一種更好的方式來組織程式的模組。動態連結與靜態連結對比靜態連結優點:①程式碼裝載速度快,執行速度略比動態連結庫快;②只需保證在開發者的計算機中有正確的.LIB檔案,在以二進位制形式釋出程式時不需考慮在使用者的計算機上.LIB檔案是否存在及版本問題,可避免DLL地獄等問題。缺點:使用靜態連結生成的可執行檔案體積較大,包含相同的公共程式碼,造成浪費;動態連結優點:①更加節省記憶體並減少頁面交換;②DLL檔案與EXE檔案獨立,只要輸出介面不變(即名稱、引數、返回值型別和呼叫約定不變),更換DLL檔案不會對EXE檔案造成任何影響,因而極大地提高了可維護性和可擴充套件性;③不同程式語言編寫的程式只要按照函式呼叫約定就可以呼叫同一個DLL函式;④適用於大規模的軟體開發,使開發過程獨立、耦合度小,便於不同開發者和開發組織之間進行開發和測試。缺點:使用動態連結庫的應用程式不是自完備的,它依賴的DLL模組也要存在,如果使用載入時動態連結,程式啟動時發現DLL不存在,系統將終止程式並給出錯誤資訊。而使用執行時動態連結,系統不會終止,但由於DLL中的匯出函式不可用,程式會載入失敗;速度比靜態連結慢。當某個模組更新後,如果新模組與舊的模組不相容,那麼那些需要該模組才能執行的軟體,統統撕掉。這在早期Windows中很常見。[1]頁面動態頁面:含有?的,或是以asp,php,jsp,aspx結尾的都是動態,動態頁面是可以透過網站後臺管理系統對網站的內容進行更新管理,動態頁面在伺服器裡面不是真實存在的,訪問動態頁面需要經過資料庫,動態頁面是動態連線,釋出公司產品,交流互動,部落格,網上調查等,這都是動態網站的一些功能。