靜態庫
打包命令:ar -r libbase.a add.o sub.o
查看歸檔文件內容:ar -t libbase.a
從歸檔文件中分解文件:ar -x libbase.a -o [add.o]
使用靜態庫:gcc main.o -L../lib -lbase -o ../bin/app
動態庫
生成動態庫命令:
$ gcc -c -fPIC add.c sub.c
$ gcc -shared add.o sub.o ../lib/libbase.so
使用動態庫:
$ gcc -c main.c -o main.o
$ gcc main.o -L../lib -lbase -o ../bin/app
靜態庫和共享庫的區別
- 靜態庫被鏈接後直接嵌入可執行文件中,被幾個文件鏈接就有幾份複製
- 動態庫在運行時被鏈接,磁盤上只保留一份
- 靜態庫被修改,需要重新編譯鏈接該庫的所有程序。
-static
選項指定鏈接靜態庫