靜態庫與動態庫

2021-07-23 11:04:16 字數 655 閱讀 7032

1.靜態庫:工程在呼叫靜態庫時,複製靜態庫,源**加長,不節省程式空間。

字尾名.a

優點:程式設計後不需要再依賴庫(以空間換時間)

建立靜態庫:gcc -c 原始檔.c

ar [rcs/rcu] 靜態庫名 目標檔案1 目標檔案2

rc 靜態庫不存在,就建立該庫檔案

s  更新靜態庫

使用:gcc -o file -l. -lname (-l.在當前目錄下)

ar -t libname.a  顯示庫中所有.o檔案

-d libname.a  name.o  在庫中.o的目標檔案刪除(不報錯)

-dv  libname.a  name.o  在庫中.o的目標檔案刪除(顯示刪除         

成功或錯誤資訊)

-x 庫名 name.o 檔名  從庫中提取目標.o檔案

2.動態庫:工程建立對映關係,每次呼叫都需要去庫中載入

字尾名 .so   優點:程式輕便,便於公升級

動態庫的建立:gcc -share -fpic -o libname.so 原始檔.c

gcc -fpic -c 原始檔.c

gcc -share name.o name.o libname.so

使用:gcc 原始檔.c ./libname.so -o 可執行檔名

靜態庫與動態庫

linux下靜態庫 a 的例子 mylib.h 位於include資料夾下 ifndef mylib h define mylib h int add int a,int b endif mylib.cpp 位於lib資料夾中 include mylib.h int add int a,int b ...

靜態庫與動態庫

庫本質上是一種可執行的二進位制 可以被作業系統載入 linux和windows的庫是不相容的 庫可以分為靜態塊和動態庫,二者的不同點在於 被載入的時刻不同。靜態庫 在程式編譯時會被連線到目標 中,程式執行時不再需要改靜態庫,體積較大,一般應用與移植過程中在宿主機上編譯的 靜態庫檔名的命名規範是以li...

靜態庫與動態庫

編譯系統在編譯的過程中,將所有相關的目標模組打包成乙個單獨的檔案,稱為靜態庫 static library 它可以用做鏈結器的輸入。當鏈結器構造乙個輸出的可執行檔案時,它只拷貝靜態庫里被應用程式引用的目標模組。在unix系統中,靜態庫以一種稱為存檔 archive 的特殊檔案格式存放在磁碟中。存檔檔...