2015新年第一篇部落格,哈哈,這個2月還沒寫過部落格呢,從現在開始繼續!
一、建立靜態庫
在本例中將建立乙個小型靜態函式庫libfoo,包含兩個函式bill()、fred()
1、編輯兩個檔案bill.c和fred.c
bill.c
#include void bill()
fred.c
#include void fred()
2、將兩個檔案生成.o目標檔案
gcc -c bill.c fred.c
3、通過.o目標檔案生成庫檔案
ar crv libfoo.a bill.o fred.o
4、為函式庫生成乙個內容表(當你使用gnu的軟體開發工具時,這一步驟不是必須的)
ranlib libfoo.a
5、為libfoo.a庫建立對應的標頭檔案foo.h(頭檔名最好和庫檔案乙個名,除去lib字首)
void fred();
void bill();
好了,以上已經建立好庫檔案libfoo.a和對應的標頭檔案foo.h,現在要使用這個庫檔案裡面的函式。
編寫應用程式program.c來呼叫庫檔案libfoo.a中的bill函式
#include #include "foo.h"
int main()
編譯程式:gcc -o program program.c -i. -l. -lfoo
說明:
-i表示標頭檔案的路徑
-l表示庫檔案的路徑
-lfoo表示庫檔案路徑下的庫檔案
二、建立動態庫
1、建立檔案test.c和對應的標頭檔案test.h
test.c
#include void fun()
test.h
void fun();
2、編譯生成動態庫檔案
gcc -o libtest.so -fpic -shared test.c
生成libtest.so動態庫檔案,最好庫檔名只在源檔名前加lib字首
現在要去引用這個動態庫
program.c
#include #include "test.h"
int main()
編譯生成可執行程式program
gcc -o program program.c -i. -l. -ltest
要注意一點是,編譯靜態庫檔案的時候要引用靜態庫檔案和對應標頭檔案的位置,
另外在使用program的程式的時候也要指定靜態庫檔案存放的位置。有幾種方法:
1)可以直接把*.so檔案放在/usr/lib等公共目錄下
2)export ld_library_path=$ld_library_path:/home/** (儲存.so檔案的位置)
Linux中建立靜態庫和動態庫
我們通常把一些公用函式製作成函式庫,供其它程式使用。函式庫分為靜態庫和動態庫兩種。靜態庫在程式編譯時 會被連線到目標 中,程式執行時將不再需要該靜態庫。動態庫在程式編譯時並不會被連線到目標 中,而是在程式執行是才被載入,因此在程式執行時還需要 動態庫存在。本文主要通過舉例來說明在linux中如何建立...
linux 下建立靜態庫和動態庫
4.生成庫檔案 編寫函式 編譯生成各目標檔案 用ar檔案對目標檔案歸檔,生成靜態庫檔案。注意歸檔檔案名必須以lib打頭 可檢視庫檔案命名規則 使用要點 在gcc的 i引數後加上靜態庫標頭檔案的路徑。在gcc的 l引數後加上庫檔案所在目錄 在gcc的 l引數後加上庫檔名,但是要去掉lib和.a副檔名。...
Linux中建立靜態庫和動態庫
分類 程式人生 2008 11 05 00 26 257人閱讀 收藏舉報 我們通常把一些公用函式製作成函式庫,供其它程式使用。函式庫分為靜態庫和動態庫兩種。靜態庫在程式編譯時 會被連線到目標 中,程式執行時將不再需要該靜態庫。動態庫在程式編譯時並不會被連線到目標 中,而是在程式執行是才被載入,因此在...