靜態鏈接是由連接器在鏈接時將庫的內容加入到可執行程序中的做法,全部內容都放到同一個可執行文件中。
靜態鏈接使得不同的程序開發者和部門能夠相對獨立地開發和測試自己的程序模塊,從某種意義上來講大大促進了程序的開發效率,原先限制程序的規模也隨之擴大。但是慢慢地靜態鏈接的諸多缺點也逐步暴露出來,比如浪費內存和磁盤空間、模塊更新困難等問題
靜態鏈接的最大缺點是生成的可執行文件太大,需要更多的系統資源,在裝入內存時也會消耗更多的時間。
動態鏈接不是並不在執行前將整個程序生成一個可執行文件
在可執行文件裝載時或運行時,由操作系統的裝載程序加載庫。大多數操作系統將解析外部引用(比如庫)作爲加載過程的一部分。在這些系統上,可執行文件包含一個叫做import directory的表,該表的每一項包含一個庫的名字。根據表中記錄的名字,裝載程序在硬盤上搜索需要的庫,然後將其加載到內存中預先不確定的位置,之後根據加載庫後確定的庫的地址更新可執行程序。可執行程序根據更新後的庫信息調用庫中的函數或引用庫中的數據
可以動態鏈接的庫,在Windows上是dynamic link library (DLL),在UNIX或Linux上是Shared Library。庫文件是預先編譯鏈接好的可執行文件,存儲在計算機的硬盤上。大多數情況下,同一時間多個應用可以使用一個庫的同一份拷貝,操作系統不需要加載這個庫的多個實例
windows下 靜態鏈接庫的使用方法(注意引用靜態鏈接庫的語句時 programs comment(lib,"靜態庫的名字"))