靜態庫和動態庫

2021-08-14 07:21:28 字數 1274 閱讀 6193

hello.h

#ifndef hello_h

#define hello_h

void hello(const

char *name);

#endif //hello_h

hello.cpp

#include 

void hello(const

char *name)

main.cpp

#include "hello.h"

int main()

無論靜態庫,還是動態庫,都是由.o檔案建立的。因此,我們必須將源程式.c或.cpp檔案通過gcc或g++先編譯成.o檔案。

g++

-chello

.cpp

靜態庫在程式編譯時會被連線到目標**中,程式執行時將不再需要該靜態庫。

靜態庫檔名的命名規範是以lib為字首,緊接著跟靜態庫名,擴充套件名為.a。

ar cr libhello.a hello.o
源程式中包含靜態庫的原型宣告,

使用用gcc命令編譯目標檔案時指明靜態庫名,gcc將會從靜態庫中將公用函式連線到目標檔案中。

注意,gcc會在靜態庫名前加上字首lib,然後追加副檔名.a得到的靜態庫檔名來查詢靜態庫檔案。

g++

-o main main.cpp -l

.-lhello

-i../include

動態庫在程式編譯時並不會被連線到目標**中,而是在程式執行是才被載入,因此在程式執行時還需要動態庫存在。

動態庫檔名命名規範和靜態庫檔名命名規範類似,也是在動態庫名增加字首lib,但其擴充套件名為.so。

g++

-shared

-fpic

-o libhello.so hello.o

源程式中包含靜態庫的原型宣告,

使用用gcc命令編譯目標檔案時指明靜態庫名,gcc將會從靜態庫中將公用函式連線到目標檔案中。

注意,gcc會在靜態庫名前加上字首lib,然後追加副檔名.so得到的靜態庫檔名來查詢靜態庫檔案。

g++

-o main main.cpp -l

.-lhello

-i../include

庫(靜態庫和動態庫)

一 靜態庫 以c語言的形式生成庫 h中extern c int add int int extern c int sub int int 二.測試靜態庫 將.h和.lib放入 h ifdef cplusplus c 程式設計師用c的方式開啟 extern c int add int int exte...

靜態庫和動態庫

一。靜態庫 靜態庫的優點在於使用簡單,編譯快速。靜態庫在應用程式生成時,已經編譯成為可重定位的目標檔案,因此可以不必再編譯,節省編譯時間,以最短的時間生成可執行程式。步奏 a。建立靜態庫 1 在編輯器中編輯其靜態庫函式 static lib.c 2 在shell中編譯該原始檔,生成乙個可重定位的目標...

靜態庫和動態庫

靜態庫 lib 中相當於存放了所有的源 包括他引入的其他靜態lib檔案.其實是所有cpp編譯後對應的.obj檔案的打包 所以靜態lib都比較大。動態庫dll也有lib但是這個lib,只是用來幫助程式在鏈結時定位dll中的函式的位址的。所以會在exe載入時才重定位函式的位址。重定位就是根據鏈結的這個l...