---------- getpi.cdouble getpi(void)
---------- mylib.h
#ifndef _mylib_h_
#define _mylib_h_
void say(const char *str);
double getpi(void);
#endif //_mylib_h_
---------- run.bat
@prompt me#$s
rem 生成靜態庫 mylib.a
gcc -o say.o -c say.c
gcc -o getpi.o -c getpi.c
ar rs mylib.a say.o getpi.o
del *.o
rem 生成 位置無關的動態庫 mylib.dll
gcc -c -fpic say.c getpi.c
gcc -shared -o mylib.dll say.o getpi.o
del *.o
rem test.c 靜態鏈結 mylib.a
gcc -o static.exe test.c -l. ./mylib.a
rem test.c 動態庫鏈結 mylib.dll
gcc test.c -o dynamic.exe -l. -lmylib
pause
---------- say.c
#include void say(const char *str)
---------- test.c
#include #include "mylib.h"
int main(void)
// windows 平台--> rem 生成靜態庫 mylib.a
--> gcc -o say.o -c say.c
--> gcc -o getpi.o -c getpi.c
--> ar rs mylib.a say.o getpi.o
--> del *.o
--> rem 生成 位置無關的動態庫 mylib.dll
--> gcc -c -fpic say.c getpi.c
say.c:1: warning: -fpic ignored for target (all code is position independent)
getpi.c:1: warning: -fpic ignored for target (all code is position independent)
--> gcc -shared -o mylib.dll say.o getpi.o
--> del *.o
--> rem test.c 靜態鏈結 mylib.a
--> gcc -o static.exe test.c -l. ./mylib.a
--> rem test.c 動態庫鏈結 mylib.dll
--> gcc test.c -o dynamic.exe -l. -lmylib
--> pause
請按任意鍵繼續. . .
// linxu 平台# 生成靜態庫 mylib.a
gcc -o say.o -c say.c
gcc -o getpi.o -c getpi.c
ar rs mylib.a say.o getpi.o
rm *.o
# 生成 位置無關的動態庫 mylib.so
gcc -c -fpic say.c getpi.c
gcc -shared -o mylib.so say.o getpi.o
rm *.o
# test.c 靜態鏈結 mylib.a
gcc -o static test.c -l. ./mylib.a
# test.c 動態庫鏈結 mylib.dll
gcc test.c -o dynamic -l. ./mylib.so
pause
靜態庫和動態庫的建立和使用
靜態庫 靜態庫是在程式執行之前就編譯到目標程式去了 優點 執行快 缺點 占用空間大 靜態庫的建立 生成xx.a檔案 1.gcc cal.c c 函式檔案 生成 o檔案 2.ar rcs libcalcul.a 需要生成的.a檔案 cal.o 一般用lib開頭,便於砍頭去尾 3.gcc calcula...
靜態庫動態庫的建立和呼叫
靜態庫的建立 靜態庫字尾通常以.a結尾,鏈結生成靜態庫時需要使用ar命令。常用引數 r 在庫中插入 修改 模組 替換靜態庫 當插入的模組名已經在庫中存在,則替換同名的模組,如若干模組中有乙個模組在庫中不存在,則ar顯示乙個 錯誤資訊,並且不會替換其他同名模組 c 建立乙個新的庫。不管庫是否存在,都將...
Windows靜態庫和動態庫的建立和使用
靜態鏈結庫 static libary 偶們用vs2005做乙個靜態鏈結庫先 開啟vs2005,新建 專案 staticcai win32控制台應用程式 新建static lib.h 和static lib.cpp 兩個檔案,這兩個檔案的內容如下 static lib.h int add int x...