【總結】Linux下C開發,怎麼做成庫檔案,又怎麼引用這個庫檔案?

來源:互聯網
上載者:User

本文根據http://topic.csdn.net/u/20091026/10/0e913e37-e4a2-4504-bcc7-61af18a22dde.html?6487的回複總結而成。

 

1. 共用庫

 

通常做成共用庫的話,在編繹時加上-shared參數,並把連結產生的檔案名稱命名libxxx.so,可以放在/usr/lib下 

其他程式引用這個庫時,在連結的時候加上-lxxx就可以了。

 

編輯好代碼以後,編譯時間採用類似下面的命令可產生"共用庫"(假如源檔案是myfun.c): 
gcc -shared -fPIC -Wmyfun.c -0 libmy.so 
解釋: -shared 產生共用庫; 
      -fIPC 表示“位置無關代碼”(Position Independent Code),可不加; 
      -W 表示輸出警告資訊,可不加; 
      庫檔案的命名要按照libxxxx.so的格式; 

要引用這個庫時: 
      gcc xxx.c -0 xxx.out -lmy 
    -l 表示設定要串連的庫(libmy.so,輸my便可) 

 

2. 靜態庫 

檔案名稱:lib.c 
先編譯成目標檔案 gcc -o mylib.o -c lib.c 
然後建立靜態庫,將mylib.o放到libmylib.a中 ar rcs libmylib.a mylib.o 
最後copy到庫目錄下/usr/lib  cp libmylib.a /usr/lib/libmylib.a 

在編寫的時候直接調用其中的函數就是了,只不過在編譯的時候要加入-l選項後面跟上庫名 
如 gcc -o test test.c -lmylib  //mylib是前面建立的庫的名稱 

3. 動態庫

建立就是 gcc -fPIC -share -o mylib.so lib.c 
調用也分兩種方法 
一種方法是 gcc -o test test.c ./libmylib.so (注意這裡跟的是動態庫的路徑 )
第二種方法是使用動態庫的函數 你man dlopen看下那幾個函數看下就知道了就不多說了

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.