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



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章