1. 程式人生 > >【領卓教育】Linux--靜態庫與動態庫(共享庫) 區別、製作和使用

【領卓教育】Linux--靜態庫與動態庫(共享庫) 區別、製作和使用

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程式中,需要呼叫靜態庫   和動態庫檔案中的函式!

                                                                                                            

                                                                                                            --領卓教育