所謂靜態庫,就是在靜態編譯時由編譯器到指定目錄尋找並且進行鏈結,一旦鏈結完成,最終的可執行程式中就包含了該庫檔案中的所有有用資訊,包括**段、資料段等。所謂
動態庫,就是在應用程式執行時,由作業系統根據應用程式的請求,動態到指定目錄下尋找並裝載入記憶體中,同時需要進行位址重定向。
win32平台下,靜態庫通常字尾為.lib,動態庫為.dlllinux
平台下,
靜態庫通常字尾為.a,動態庫為.so從本質上來說,由同一段程式編譯出來的靜態庫和動態庫,在功能上是沒有區別的。不同之處僅僅在於其名字上,也就是「靜態
」和「動態
」。由上面的介紹不難看出,相對於動態庫,靜態庫的優點在於直接被鏈結進可執行程式中,之後,該可執行程式就不再依賴於執行環境的設定了(當然仍然會依賴於
cpu指令集和作業系統支援的可執行檔案格式等硬性限制)。而動態庫的優點在於,使用者甚至可以在程式執行時隨時替換該動態庫,這就構成了動態外掛程式系統的基礎。
具體使用靜態庫和動態庫,由程式設計師根據需要自己決定。
靜態庫與動態庫
linux下靜態庫 a 的例子 mylib.h 位於include資料夾下 ifndef mylib h define mylib h int add int a,int b endif mylib.cpp 位於lib資料夾中 include mylib.h int add int a,int b ...
靜態庫與動態庫
庫本質上是一種可執行的二進位制 可以被作業系統載入 linux和windows的庫是不相容的 庫可以分為靜態塊和動態庫,二者的不同點在於 被載入的時刻不同。靜態庫 在程式編譯時會被連線到目標 中,程式執行時不再需要改靜態庫,體積較大,一般應用與移植過程中在宿主機上編譯的 靜態庫檔名的命名規範是以li...
靜態庫與動態庫
1.靜態庫 工程在呼叫靜態庫時,複製靜態庫,源 加長,不節省程式空間。字尾名.a 優點 程式設計後不需要再依賴庫 以空間換時間 建立靜態庫 gcc c 原始檔.c ar rcs rcu 靜態庫名 目標檔案1 目標檔案2 rc 靜態庫不存在,就建立該庫檔案 s 更新靜態庫 使用 gcc o file ...