func.h:
#ifndef _func_h
#ifdef _func_h
extern func(void); //標頭檔案的內容
#endif
func.c:
void func(void)
main.c:
#include #include "func.h" //我們自己寫的標頭檔案用「」
int main()
首先我們將函式的功能**編譯成***.o檔案(重定向):
gcc -c fun.c -o func.o
生成靜態庫(將func.o歸納為靜態庫):
ar r libfunc.a func.o , 其中 ar表示建立歸檔,lib代表字首,func.a 代表庫名而.a字尾該庫為靜態庫
檢視庫里包含的依賴檔案,可以通過命令
ar tv libfunc.a
刪除庫里包含的依賴檔案,可以通過命令
ar d libfunc.a func.o
gcc -c -fpic func.c -o func.o
-fpic 生成動態庫被連線時,可以在記憶體上自動尋找一塊合理的記憶體
gcc -shared func.o -o libfunc.so
其中: -shared 代表生成共享庫
lib 庫檔案
func 庫名字
.so 動態庫
使用庫時:
gcc main.c -o main +動態庫的路徑/libfunc.so
通過我們對靜態庫和動態庫的生成和使用的過程的分析,可以發現兩者載入的時間是不同的,靜態庫在程式編譯時被鏈結到目標**中,而動態庫當程式編譯時,不需要鏈結庫,但當程式執行時必須鏈結庫檔案。
靜態庫與動態庫的生成
一.靜態庫 靜態庫 a 程式在編譯鏈結時候把庫的 鏈結到可執行 中,程式執行時將不再需要靜態庫。測試程式 add.h ifndef add h define add h int add int x,int y endif add.c include add.h int add int x,int y...
libraw靜態庫與動態庫的生成
直接執行對應的qt檔案就可以得到對應的動態庫。注意只用執行libraw對應的子工程即可。動態庫會生成對應的dll和lib檔案。靜態庫在字尾名為win64.zip或者win32.zip的壓縮包裡面有。在lib資料夾下面。但是我使用後發現它自帶的靜態庫沒有生效。不知道是什麼原因。因此我使用vs2015對...
動態庫與靜態庫的原理介紹
在unix 的應用開發中,靜態庫和動態庫都是我們經常用到的技術,有必要對這兩個概念及其原理做一些介紹。靜態庫靜態庫是一些目標檔案的集合,通常為字尾為.o 的檔案,通過ar 工具打包而成,命名格式為lib a 其中 為給定的靜態庫檔名,如libm.a 為數學函式庫,使用者也可以命名自己的庫。在建立可執...