靜態庫和動態庫的區別及生成方式

2021-09-19 07:47:28 字數 672 閱讀 6672

靜態庫

動態庫

它們兩個還有很明顯的不同點:當同乙個程式分別使用靜態庫,動態庫兩種方式生成兩個可執行檔案時,靜態鏈結所生成的文 件所占用的記憶體要遠遠大於動態鏈結所生成的檔案。這是因為靜態鏈結是在編譯時將所有的函式都編譯進了程式,而動態鏈結是 在程式執行時由作業系統幫忙把動態庫調入到記憶體空間中使用。另外如果動態庫和靜態庫同時存在時,鏈結器優先使用動態庫。

生成方式:

靜態庫:

gcc -c file1.c   

gcc -c file2.c

...

gcc -c filen.c

ar -rcs libname.a file1.o file2.o ... filen.o

動態庫:

gcc  -shared  -fpic  -o   lib庫名.so   file1.c file2.c ... filen.c
使用靜態庫或動態庫:

gcc  檔名   -l lib_path   -l庫名

靜態庫 a和動態庫 so生成及呼叫

gcc編譯器工具一般位於 usr bin或者 usr local bin目錄,但它會從其它位置執行各種編譯器支援的應用程式,這個位置可能是 usr lib gcc lib 目錄,gnu c c 編譯器的各個工具和gnu專用標頭檔案都儲存在這裡。標頭檔案,一般位於 usr include,包含標頭檔案...

靜態庫和動態庫的區別

windows vc 靜態庫 在編譯的時候載入生成目標檔案,在執行時不用載入庫,在執行時對庫沒有依賴性。動態庫 在目標檔案執行時載入,手動載入,且對庫有依賴性。兩者區別 一,靜態庫的使用需要 1 包含乙個對應的標頭檔案告知編譯器lib檔案裡面的具體內容 2 設定lib檔案允許編譯器去查詢已經編譯好的...

靜態庫和動態庫的區別

靜態庫在程式編譯時被連線到目標 中,程式執行時不再需要靜態庫 動態庫在編譯時並不被連線到目標 中,而是程式執行時才被載入,執行時仍然需要動態庫存在。靜態庫的命名規範是以 lib為字首,緊接著是靜態庫名,副檔名是.a 先將檔案編譯成 o 檔案然後是編譯成靜態檔案 動態庫檔案在檔名前加 lib字首,擴充...