測試環境 windowsxp系統, cygwin(gcc 3.4.4)
一。五個原始檔
so_test.h, test.c, test_a.c, test_b.c, test_c.c
so_test.h:
#include
void test_a();
void test_b();
void test_c();
test.c:
#include "so_test.h"
int main()
test_b.c:
#include "so_test.h"
void test_b(){
printf("this is in test_b()\n");
test_c.c:
#include "so_test.h"
void test_c(){
printf("this is in test_c()\n");
二.編譯
由於是在windows下模擬unix環境,編譯過程有些不同,自己按照unix編譯測試沒有成功。下面的測試是可以的。
gcc -c test_a.c test_b.c test_c.c -o test.o(生成靜態庫test.o)
gcc -shared -o libtest.dll test.o(生成動態庫libtest.dll)
gcc -l./ -ltest -o run test.c(生成可執行檔案 run.exe)
三 .在本地其他windows環境中呼叫失敗,在windows環境中呼叫需要 cygwin庫的支援.
動態鏈結庫 靜態鏈結庫
包含標頭檔案和庫 idir 指定編譯查詢標頭檔案的目錄,常用於查詢第三方的庫的標頭檔案,例 gcc test.c i.inc o test。ldir 指定鏈結時查詢lib的目錄,常用於查詢第三方庫。llibrary 指定額外鏈結的lib庫 巨集定義 dmacro 以字串 1 預設值 定義 macro...
靜態鏈結庫 動態鏈結庫
庫是寫好的現有的,成熟的,可以復用的 現實中每個程式都要依賴很多基礎的底層庫,不可能每個人的 都從零開始,因此庫的存在意義非同尋常。本質上來說庫是一種可執行 的二進位制形式,可以被作業系統載入記憶體執行。庫有兩種 靜態庫 a lib 和動態庫 so dll windows上對應的是.lib dll ...
靜態鏈結庫,動態鏈結庫
關於靜態鏈結庫,參考如下博文 當你完成了 開發,想把這個 給別人用,但是又不希望別人看到原始碼,就要給別人乙個庫和標頭檔案,庫和標頭檔案是配合的,缺一不可。或者過程相反,你從別人那裡拿到乙個庫和標頭檔案來使用。那麼如何編譯生成乙個庫給他人,如何使用從他人那裡拿到的庫呢?範例1 我們想把linuxfr...