2014年6月29日 星期日
C 語言函式庫
C/CPP 靜態函式庫 and 動態函式庫
在撰寫 C/CPP 時,可先將所需要的 function 程式,建立物件產生函式庫,主程式 Compiler 時可供連結。
動態函式庫(Share Lib) : 程式開始執行時才載入,以「lib」開頭程式庫 ,名稱末端再加上「.so」或「.a」。
靜態函式庫(Static Lib) : 函式庫中的元件會連結到我們的執行檔中,執行程式時,不需要再函式庫的配合。
以小編目前執行的 Project 為例,
(1) 常用 function 建立靜態函式庫。
(2) 建立動態函式庫,DPI 連結 test_main.o / libstim.a ( System 可使用參考之 Share Library)
(1) Static Lib.
// function file : func1.c , func2.c
// compile function file 產生物件檔 *.o , -m32 編輯成32位元執行檔
// 設定 head file library path LIB_PATH
$/user/cpp> gcc -m32 -c test1.c test2.c -I {LIB_PATH}
// 用 ar 指令將所有的 .o (物件檔) 組合成 static library " libstim.a "
$/user/cpp> ar -rcs libstim.a *.o
(#) // test_main file
$/user/cpp> gcc -m32 -c test_main.c -I {LIB_PATH}
(2) Share Lib. and DPI Link
//-shared 表示要編譯成 shared library
// -L Share Library Path
// -l Share Library File
// -Wl 用於參遞參數給linker,因此-soname與libmylib.so.1會被傳給linker處理。
$/user/cpp> gcc -WI -m32 -shared -o libdpi.so test_main.o libstim.a \
-L {SHARE_LIB_PATH} \
-l {SHEAR_LIB_DATA}
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言