靜態庫的使用
靜態庫的操作工具: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...