一,動靜態庫
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 就在安裝目錄下 所...