liux初學者周周感悟 靜態庫和動態庫

2021-07-30 11:14:05 字數 1473 閱讀 8822

linux

下類庫主要有靜態庫和動態庫。其中,靜態庫在程式連線的時候會自動的連線到程式裡。所以一旦編譯完成,靜態庫就不需要了。靜態庫通常以

.a結尾。例如:

libutil.z

libuuid.a

等。而動態庫在程式編譯過程中不會被連線到目標**中,在程式執行中才會被載入,通常是以

.so結尾。如:

libz.so

。因此,靜態庫有更高的速率,但是同時也會消耗更多的空間。值得注意的是,如果既有靜態庫又有動態庫,在編譯的時候預設使用動態庫。

下面具體闡述怎麼建立自己的靜態庫:

(1)編寫庫檔案

testlib.c

#include

void a()

(2)編寫乙個標頭檔案用來申明我們的函式

teatlib.h

voida();

(3)編譯檔案

gcc –c teatlib.c

(4)用

ar建立乙個歸檔檔案

ar crv libfirst.a teatlib.0

生成libfirst.a

(5)然後就能使用靜態庫了

下面是編寫動態庫

的過程

(1)設計庫**

[bill@billstone make_lib]$ cat pr1.c 

int p = 2; 

void print() 

[bill@billstone make_lib]$   

(2)生成動態庫

[bill@billstone make_lib]$ gcc -o -fpic -shared -o dl.so pr1.c 

[bill@billstone make_lib]$ ls -l *.so 

-rwxrwxr-x        1bill         bill                 6592    4

月15 15:19 dl.so 

[bill@billstone make_lib]$ 

動態庫的隱式呼叫

在編譯呼叫庫函式**時指明動態庫的位置及名字

,  看下面例項

[bill@billstone make_lib]$ cat main.c 

int main()   

[bill@billstone make_lib]$ gcc -o tdl main.c ./dl.so 

[bill@billstone make_lib]$ ./tdl 

this is the first dll src! 

[bill@billstone make_lib]$ 

當動態庫的位置活名字發生改變時

,  程式將無法正常執行

;  而動態庫取代靜態庫的好處之一則是通過更新動態庫而隨時公升級庫的內容

linux初學者周周感悟 3

在學校的課程中,我們學習了幾個命令。1.關於檔案的幾個命令 a touch 檔名.c 建立檔名 b.cat 檔名 檢視檔案 c.rm 檔名 刪除檔案 n不刪除,y刪除 d.rm f 檔名 強制刪除 f gedit 檔名 寫檔案 g.gcc 檔名 編譯檔案 2。vim的有關命令 vim 開啟檔案,並定...

linux 初學者 周周感悟 4

今天我們來介紹總結一下vim編輯器的使用。vim 命令 移動游標 h 的鍵位於左邊,每次按下就會向左移動。l 的鍵位於右邊,每次按下就會向右移動。j 鍵看起來很象一支尖端方向朝下的箭頭。k朝上移動 vim 命令 啟動和退出 1.請按鍵 這是為了確保您在正常模式 2.q 回車 不儲存退出。3.wq 回...

第7周 專案1 見識初學者常見錯誤

錯誤 sum沒有定義,應該為 int a,b,sum 錯誤 漏寫了 應該為 cin a b 錯誤 將main後面的括號改寫為英文的才對。include using namespace std int main int a,b,sun cin a b sum a b cout 錯誤 sum寫成了sun...