linux 的庫檔案

2021-06-05 00:20:45 字數 798 閱讀 4762

1.什麼是庫

在windows平台和linux平台下都存在著大量的庫。

本質上來說庫是一種可執行**的二進位制形式,可以被作業系統載入記憶體執行。

由於windows和linux的本質不同,因此二者庫的二進位制是不相容的。

本文僅限於介紹linux下的庫。

2.庫的種類及區別

靜態庫和共享庫(動態庫)

字尾不同

通常共享庫以.so(sharedobject的縮寫)結尾,靜態鏈結庫通常以.a結尾(archive的縮寫)。在終端預設情況下,共享庫通常為綠色,而靜態庫為黑色。

**被載入的時刻不同

靜態庫——編譯時載入

動態庫——語句調運時載入

靜態庫的**在編譯過程中已經被載入可執行程式,因此體積較大。

動態庫,程式中只保留庫檔案的名字和函式名,在執行時去查詢庫檔案和函式體並載入記憶體,程式的體積基本變化不大。

靜態庫的原則是「以空間換時間」,增加程式體積,減少執行時間;

動態庫則是「以時間換空間」,增加執行時間,減少了程式本身的體積。

不同的應用程式如果呼叫相同的動態庫,那麼在記憶體裡只需要有乙份該動態庫的例項。

3.庫存在的意義

你呼叫函式的時候,只是乙個#include就搞定,作業系統就自己幫你去找你要用的東西,(前提是你的環境變數要正確,或者你的庫在系統預設的地方),而且庫函式是成熟穩定的。

你不用去編寫所用的**,你可以用牛人們已經用了千百遍的**——標準庫

這也是團隊合作的必要。你有時候只需要了解函式的功能、入口、出口。

如病毒庫的公升級,具體的我還得查查資料。哈哈見笑。

Linux編譯庫檔案

靜態庫檔名的命名規範是以lib為字首,緊接著跟靜態庫名,擴充套件名為.a,動態庫檔名命名規範和靜態庫檔名命名規範類,也是在動態庫名增加字首lib,但其擴充套件名為.so。1 動態庫 在linux下,使用gcc shared c o lib so可以編譯乙個動態庫,使用gcc yyy.c l l.就可...

linux 標頭檔案和庫檔案的設定

c c 程式在linux下被編譯和連線時,gcc g 會查詢系統預設的include和link的路徑,以及自己在編譯命令中指定的路徑。自己指定的路徑就不說了,這裡說明一下系統自動搜尋的路徑。include標頭檔案路徑 除了預設的 usr include,usr local include等inclu...

linux下增加庫檔案

庫檔案在連線 靜態庫和共享庫 和執行 僅限於使用共享庫的程式 時被使用,其搜尋路徑是在系統中進行設定的。一般 linux 系統把 lib 和 usr lib 兩個目錄作為預設的庫搜尋路徑,所以使用這兩個目錄中的庫時不需要進行設定搜尋路徑即可直接使用。對於處於預設庫搜尋路徑之外的庫,需要將庫的位置新增...