靜態庫基礎

2021-07-30 11:17:40 字數 1555 閱讀 4731

靜態庫的使用

靜態庫的操作工具:gcc和ar 命令。 

編寫及使用靜態庫 

(1)設計庫原始碼 pr1.c 和 pr2.c 

[root@billstone make_lib]# cat pr1.c 

void print1() 

[root@billstone make_lib]# cat pr2.c 

void print2() 

(2)  編譯.c 檔案 

[bill@billstone make_lib]$ cc -o -c pr1.c pr2.c 

[bill@billstone make_lib]$ ls -l pr*.o 

-rw-rw-r--        1 bill          bill                    804    4 月  15 11:11 pr1.o 

-rw-rw-r--        1 bill          bill                    804    4 月  15 11:11 pr2.o 

(3)  鏈結靜態庫 

為了在編譯程式中正確找到庫檔案,靜態庫必須按照 lib[name].a 的規則命名,如下例中[name]=pr. 

[bill@billstone make_lib]$ ar -rsv libpr.a pr1.o pr2.o 

a - pr1.o 

a - pr2.o 

[bill@billstone make_lib]$ ls -l *.a 

-rw-rw-r--        1 bill          bill                  1822    4 月  15 11:12 libpr.a 

[bill@billstone make_lib]$ ar -t libpr.a 

pr1.o 

pr2.o 

(4)  呼叫庫函式** main.c 

[bill@billstone make_lib]$ cat main.c 

int main() 

(5)  編譯鏈結選項 

-l 及-l 引數放在後面.其中,-l 載入庫檔案路徑,-l 指明庫檔案名字. 

[bill@billstone make_lib]$ gcc -o main main.c -l./ -lpr 

[bill@billstone make_lib]$ ls -l main* 

-rwxrwxr-x        1 bill          bill                11805    4 月  15 11:17 main 

-rw-rw-r--        1 bill          bill                      50    4 月  15 11:15 main.c 

(6)執行目標程式 

[bill@billstone make_lib]$ ./main 

this is the first lib src! 

this is the second src lib! 

[bill@billstone make_lib]$ 

C動態庫 靜態庫基礎

一 基本概念 依據鏈結階段來分,庫有兩種 靜態庫 a lib 和動態庫 so dll 二者主要的不同點在於 被載入的時刻不同,靜態庫的 在編譯過程中已經被載入可執行程式,因此檔案較大 動態庫的 是在可執行程式執行時才載入記憶體的,在編譯過程中僅簡單的引用,因此 體積較小。二者的特點總結如下 靜態庫 ...

Linux動態庫和靜態庫基礎

example hello.c hello.h main.c 1.靜態庫 gcc c hello.c ar cr libhello.a hello.o 引用庫 lhello 2.動態庫 gcc c hello.c gcc shared fpci o libhello.so hello.o 引用庫 l...

Linux基礎 靜態庫和共享庫

概念 庫檔案就是目標檔案的集合,可以被其它 呼叫,把 封裝成庫檔案後方便使用 方便管理 安全性高 保密性強。靜態庫和共享庫輔助工具 ldd 檢視可執行程式依賴那些共享庫 nm 檢視目標檔案 可執行檔案 靜態庫 共享庫中的符號列表 strip 刪除目標檔案 可執行檔案 靜態庫 共享庫中的符號。objd...