回覆列表
  • 1 # 使用者3673475113773

    動態連結庫和靜態連結庫一般是編譯整合一系列的介面(函式)在程式原始碼編譯完成後透過編譯器編譯並透過連結器與這些庫進行連結動態連結庫與靜態連結庫的區別在於連結器在進行連結時靜態庫會被直接編譯程序序裡而動態連結庫並不會,我們這裡將這些連結庫稱作依賴(動態庫和靜態庫)程式的執行需要這些依賴,程式在靜態連結後該程式本身便已包含該依賴而動態連結後的程式本身本不包含該依賴,這些依賴需要執行者自行安裝進作業系統(動態庫、執行時庫)程式執行時會動態地載入這些庫linux上動態庫一般的字尾後為.so靜態庫一般的字尾為.a由於靜態連結會直接將庫編譯程序序裡所以靜態編譯後的程式相較於動態連結所要大這就是因為靜態連結會將連結庫編譯程序序裡的原因,所以佔用就要大了出於這種原因,靜態庫不易於維護與更新,如果連結庫中有實現有bug等需要更新則需要更新整個程式,因為靜態庫被編譯程序序中了但動態庫就沒有這種情況了,因為動態庫是程式執行時動態載入的,所以我們只需要更新動態庫而不需要更新所有依賴該庫的程式(軟體)另一方面,很多程式的開發都會使用到相同的連結庫,也就是很多程式(軟體)會有相同的依賴如果將這些依賴全部靜態編譯的話將會造成儲存資源佔用過多而造成資源浪費而使用動態庫的方式這些程式(軟體)則可以共享一個連結庫,而不需要每個程式都帶一個連結庫,這樣就大大地減少了儲存資源佔用空間

  • 中秋節和大豐收的關聯?
  • 名字思童的成語解釋?