本文根據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看下那幾個函數看下就知道了就不多說了