靜態庫與動態庫的對比及建立

2021-10-24 02:24:36 字數 1121 閱讀 7107

是在可執行程式執行前就已經加入到**中,成為執行程式的一部分;靜態庫可以認為是一些目標**的集合。按照習慣,一般以「.a」作為檔案字尾名。常用在對空間要求較低,對時間要求較高的核心程式中,例如作業系統的啟動程序。

是在執行程式啟動時載入到執行程式中,可以被多個執行程式共享使用。常用在對空間要求較高,對時間要求較低的核心程式中。

靜態庫會分別載入到每乙個呼叫的地方,而動態庫只會在呼叫時載入到記憶體裡,用完後釋放。因此使用靜態庫可以提高編譯效率(隨著編譯器的發展,這個差距已經很小),但是會消耗更多的記憶體空間;使用動態庫編譯時更慢,但是使用更少的記憶體空間。

要建立乙個靜態庫,或要將目標**加入到已經存在的靜態庫中,可以使用以下命令:

ar rcs libmylib.a(庫名必須以lib開頭,字尾名必為.a) file1.o(庫材料)

靜態庫製作步驟:

1、將.c檔案生成.o檔案

gcc -c file1.c -o file1.o

gcc -c file2.c -o file2.o

2、使用ar工具製作靜態庫

ar  rcs  lib庫名.a  file1.o  file2.o
3、編譯靜態庫到可執行檔案中

gcc  test.c  lib庫名.a  -o  a.out
1、將.c檔案生成.o檔案(生成與位置無關的**)

gcc -c file1.c -o file1.o -fpic

gcc -c file2.c -o file2.o -fpic

2、使用gcc -shared製作動態庫

gcc -shared lib庫名.so file1.o file2.o
3、編譯可執行程式時,指定所使用的動態庫。-l,指定庫名 -l,指定庫路徑

gcc test.c -o a.out -l庫名 -l.

/llib

4、執行可執行程式./a.ou

靜態庫,動態庫對比

1 靜態鏈結庫的優點 1 裝載速度快,執行速度略比動態鏈結庫快 2 只需保證在開發者的計算機中有正確的.lib檔案,在以二進位制形式發布程式時不需考慮在使用者的計算機上.lib檔案是否存在及版本問題,可避免dll地獄等問題。2 動態鏈結庫的優點 1 更加節省記憶體並減少頁面交換 2 dll檔案與ex...

Linux的靜態庫與動態庫的建立

我們在使用每一種程式語言時都會遇到函式庫的概念,只需要新增某個標頭檔案,就可以呼叫其中提供的各種函式介面,簡單便捷的實現多種功能。本文將向大家介紹在linux系統中,如何建立c語言的靜態函式庫和動態函式庫。靜態庫在程式編譯時會被鏈結到目標 中,在程式執行時便不再需要相應靜態庫檔案。1 建立相關原始檔...

linux下建立靜態庫與動態庫

靜態庫 編寫好c原始檔,裡面只有函式的實現。要呼叫的檔案比如是main.c,在檔案裡宣告c原始檔裡的庫函式名。1 首先 gcc c hello.c 生成hello.o 2 ar crs libhello.a hello.o 3 gcc o main main.c l.lhello l後面跟著庫的路徑...