靜態編譯/動態編譯 靜態鏈接/動態鏈接 靜態庫/動態庫

記錄一下,下次搞不清可以來看看。

靜態編譯/動態編譯

靜態編譯:是指編譯器在編譯可執行文件的時候,將可執行文件需要調用的對應的動態鏈接庫中的部分提取出來,鏈接到可執行文件中去,使可執行文件在運行的時候可以不依賴動態鏈接庫。

動態編譯:動態編譯的可執行文件需要附帶一個動態鏈接庫,在執行時,需要調用其動態鏈接庫中的命令。所以其優點是縮小了執行文件本身的體積,另一方面是加快了編譯速度。缺點是哪怕是很簡單的程序,只用到了鏈接庫中的一兩條命令,也需要附帶一個相對龐大的鏈接庫;二是如果其他計算機上沒有安裝對應的運行庫,則用動態編譯的可執行文件就不能運行。

PS:靜態鏈接與動態鏈接的優缺點相互對應。

靜態鏈接/動態鏈接

靜態鏈接:靜態鏈接是由鏈接器在鏈接時將庫的內容加入到可執行程序中的做法。鏈接器是一個獨立程序,將一個或多個庫或目標文件鏈到一塊生成可執行程序。

動態鏈接:在可執行文件裝載或運行時,由操作系統的裝載程序加載庫。

動態庫/靜態庫

靜態庫:靜態庫在程序的鏈接階段被複制到了程序中,和程序運行時沒有關係。其特點是,可執行文件中包含了庫代碼的一份完整拷貝;缺點就是被多次使用就會有多份冗餘拷貝。

動態庫:動態庫是在程序運行時由系統動態加載到內存中共程序調用,在鏈接階段沒有被複制到程序中。使用動態庫的有點是系統只需載入一次動態庫,不同程序可以得到內存中相同的動態庫的複本,因此節省了很多內存。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章