c語言動靜態庫

2021-09-17 02:13:37 字數 849 閱讀 1410

一,動靜態庫

1.什麼是庫檔案?

用來儲存函式和變數的倉庫,只能使用庫檔案裡的函式或者變數,但無法看到是如何實現的。

例如:printf,scanf,strcpy這些都是庫函式,也就是儲存在庫檔案裡的函式

2.linux庫檔案:靜態庫.a 和動態庫.so

3.linux庫檔案的存放位置:

/lib:系統啟動和執行需要的庫

/usr/lib:應用程式啟動或者執行需要載入的庫

4.靜態庫.a:編譯時載入

5.動態庫.so:執行時載入

6.如何製作靜態庫

gcc -c .c檔案 生成.o目標檔案

ar rcs lib靜態庫名.a .o檔案

gcc test.c -l靜態庫名,-l只能到/lib和/usr/lib兩個目錄下找庫,所以我們自己寫的庫要加-l+路徑,也可把自己寫的庫加入到/usr/lib目錄下。

製作動態庫

gcc -shared -fpic add.c -o lib動態庫名.so

在同時有重名動靜態庫時,優先鏈結動態庫

連線動態庫:gcc test.c ./libadd.so -o add

動態庫如何公升級?:直接替換庫

動態庫公升級:先重新生成新的庫,再重新編譯

使用動靜態庫區別?

1.使用動態庫編譯的程式易於公升級,靜態庫難於公升級;

2.使用動態庫生成可執行檔案小,占用記憶體小;靜態庫生成檔案大,占用記憶體大;

3.使用動態庫編譯程式快於靜態庫;

4.使用動態庫編譯程式執行時間慢於靜態庫;

5.使用動態庫難以部署,靜態庫容易部署。

如何選擇動態庫與靜態庫?

編譯時間需求和執行時間需求。

C C 動 靜 態庫

如果多個程式使用同乙個動態庫,如果動態庫出現bug,不需要公升級所用該動態庫的程式,只要公升級該動態庫。該動態庫只有這乙個,沒有其他副本,節省記憶體空間 靜態庫是編譯的時候被載入,使用靜態庫的好處 使用靜態庫編譯好的 程式在任何機器上都可以直接執行。如果有多個程式使用該靜態庫,如果公升級該靜態庫,使...

Linux下C語言開發 動靜態庫的生成

0人收藏此文章,我要收藏 發表於2年前 已有440次閱讀 共0 我們通常把一些公用函式製作成函式庫,供其它程式使用。函式庫分為靜態庫和動態庫兩種。靜態庫在程式編譯時會被連線到目標 中,程式執行時將不再需要該靜態庫。動態庫在程式編譯時並不會被連線到目標 中,而是在程式執行是才被載入,因此在程式執行時還...

Linux 下編譯鏈結動靜態庫

linux 版本是 red hat 9 核心版本是 2.4.18 輸入 which gcc 檢視 gcc 的位置在 usr bin gcc gcc v 檢視 gcc 編譯前的配置資訊 prefix usr 說明了安裝目錄 沒有 with headers 說明預設的 include 就在安裝目錄下 所...