如果函式庫的乙份拷貝是可執行檔案的物理組成部分,那麼我們稱之為靜態鏈結。
如果可執行檔案只是包含了檔名,讓載入器在執行時能夠尋找程式所需的函式庫,那麼稱為動態鏈結。
即根據函式庫是不是可執行檔案的組成部分區分靜態鏈結和動態鏈結。
1、可執行檔案的體積小。
2、雖然執行速度稍慢,但是能更加有效的利用磁碟空間,因為函式庫只有在需要時才被對映到程序中。
3、作業系統核心保證對映到記憶體中的函式庫能被使用它們的所有程序共享,從而提高系統整體效能,如果是靜態鏈結,則每個檔案都會擁有乙份單獨的拷貝,無疑浪費資源。
即動態鏈結的函式庫是共享的。
動態鏈結 靜態鏈結
在linux系統中,ld鏈結器將彙編器編譯出來的目標檔案和靜態庫里的.a檔案鏈結生成可執行檔案。靜態庫中的.a檔案的 會在靜態鏈結過程中新增到可執行檔案中,可執行檔案會變得很大。與靜態鏈結不同,linux系統的ld鏈結器會將動態庫.so檔案進行符號重定位生成可執行檔案,動態庫.so檔案並不新增到可執...
靜態鏈結 動態鏈結
所謂靜態 動態是指鏈結。回顧一下,將乙個程式編譯成可執行程式的步驟 圖 編譯過程 靜態庫之所以成為 靜態庫 是因為在鏈結階段,會將彙編生成的目標檔案.o與引用到的庫一起鏈結打包到可執行檔案中。因此對應的鏈結方式稱為靜態鏈結。試想一下,靜態庫與彙編生成的目標檔案一起鏈結為可執行檔案,那麼靜態庫必定跟....
靜態鏈結和動態鏈結
靜態載入dll dll工程b 專案屬性 配置屬性 常規 配置型別 動態庫 dll 在宣告檔案中,宣告匯出函式 declspec dllexport int xx 如果是c檔案,要在c 檔案中被呼叫,註明extern c 可以 ifdef cplusplus extern c endif 呼叫dll的...