靜態庫與動態庫的生成和簡明介紹

2021-09-02 17:27:42 字數 900 閱讀 4289

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 為數學函式庫,使用者也可以命名自己的庫。在建立可執...