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 的特殊檔案格式存放在磁碟中。存檔檔...