1. 程式人生 > >Linux下靜態庫和動態庫的製作和使用

Linux下靜態庫和動態庫的製作和使用

Linux作業系統支援的庫函式分為;

  1.靜態庫:libxxx.a  在編譯時就將庫函式編譯進可執行程式中.

     優點.  程式執行環境中不需要外部的函式庫.

      缺點: 可執行程式大

   2. 動態庫 .又稱共享庫,libxxxx.so  在執行時候將庫載入到可執行程式中.

       優點:  可執行程式小.

       缺點:  程式的執行環境中必須提供相應的庫

     函式庫目錄: /lib     /usr/lib 

靜態庫的製作過程:

     1.  生成目標檔案: gcc -c -o file.o file.c

          將.c檔案編譯成.o檔案.

     2.  靜態庫建立命令 ar 

          ar  -cr  -o libfile.a file.o

               -c : create的意思.

               -r :  replace的意思.表示當插入的模組file.o已經存在libfile.a中,則覆蓋,反之ar顯示一個錯誤資訊.

          使用過程:   gcc main.c   -L .(.表示在當前目錄下)  -lsub

動態庫的製作過程:

     1. 生成目標檔案: gcc -c -o file.o file.c

     2. gcc -shared -fpic -o libfile.so file.o

              -fpic:產生位置 無關程式碼.

              - shared: 生成共享庫.

          用上述命令生成libaddsub.so動態函式庫.

          gcc -o main -L. -lfile

      此時還不能立即./out,因為在動態函式庫使用時,會查詢/usr/lib  /lib目錄下的動態函式庫,而此時我們生成的庫不在裡邊.

       第一種辦法:

           將生成的libsub.so放到/usr/lib或/lib中去.

 第二種方法  假設libfile.so在/home/file

   export  LD_LIBRARY_PATH=home/linux/addsub(路徑): $LD_LIBRARY_PATH