靜態庫與動態庫

2021-08-19 08:50:08 字數 1024 閱讀 8016

參考blog,**於該部落格。

庫分為靜態庫(linux.awindows.lib)和動態庫(linux.sowindows.dll)

建立靜態庫

靜態庫:是目標檔案(.o檔案)與引用的庫載入鏈結到一塊生成可執行檔案,這種鏈結方式為靜態鏈結,所以鏈結的庫為靜態庫。

靜態庫與彙編生成的目標檔案一起鏈結為可執行檔案,那麼靜態庫必定跟.o檔案格式相似。其實乙個靜態庫可以簡單看成是一組目標檔案(.o/.obj檔案)的集合,即很多目標檔案經過壓縮打包後形成的乙個檔案。靜態庫特點總結:

下面編寫一些簡單的c++類,將其編譯成靜態庫給他人用,標頭檔案如下所示:

linux下使用ar工具、windows下vs使用lib.exe,將目標檔案壓縮到一起,並且對其進行編號和索引,以便於查詢和檢索。一般建立靜態庫的步驟如圖所示:

linux靜態庫命名規範,必須是」lib[your_library_name].a」:lib為字首,中間是靜態庫名,擴充套件名為.a。

首先將**編譯為目標檔案(.o)

g++

-ca.

cpp

通過ar工具將目標檔案(.o)打包為靜態庫檔案(.a)

ar -crv liba.a

a.o

靜態庫的使用

linux下使用靜態庫,只需要在編譯的時候,指定靜態庫的搜尋路徑(-l選項)、指定靜態庫名(不需要lib字首和.a字尾,-l選項)

g++ main.cpp -l

../staticlibrary -i a

靜態庫與動態庫

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 ...