【領卓教育】Linux--靜態庫與動態庫(共享庫) 區別、製作和使用
阿新 • • 發佈:2018-11-04
1.概念和區別
靜態庫 :(1)libxxx.a ,程式在編譯時,將庫編譯 進可執行程式中!
(2)優點:程式的執行環境中不需要外部的庫函式!
(3)缺點:可執行程式略大
動態庫(共享庫):(1)libxxx.so,程式在執行時 ,將庫載入到可執行程式中!
(2)優點:可執行程式小!
(3)缺點:程式的執行環境中必須提供相應的庫。
2.靜態庫的製作和使用。
靜態庫的生成(也就是 . a檔案的生成),一般分為三個步驟:
(1)用xxx.c檔案 生成 xxx.o檔案
gcc -c -o sub.o sub.c
(2)用 xxx.o檔案生成 libxxx.a檔案
ar -cr libsub.a sub.o // 生成libsub.a靜態庫檔案
(3)編譯主程式,連結libsub.a靜態庫
gcc main.c -o main -L. -lsub // 連線庫
./main
3.動態庫的製作與使用。
(1)用xxx.c檔案生成xxx.o檔案
gcc -c -o add.o add.c
(2)用 xxx.o檔案生成libxxx.so檔案
gcc -shared -fpic -o libadd.so add.o
(3)編譯主程式並連結動態庫檔案
gcc -o main main.c -L. ladd
(4)將libadd.so檔案複製到系統庫目錄 /usr/lib
cp libadd.so /usr/lib
./main
以上就是在Linux中靜態庫和動態庫的製作和使用方法,親測有效哦!
當然方法不止一種,動態庫還有其他的使用方法!注意:在main.c程式中,需要呼叫靜態庫 和動態庫檔案中的函式!
--領卓教育