一、庫
一組預先編譯好的函式的集合,這些函式都是按照可重用的原則編寫的。通由一組相互關聯的函式組成以執行某項常見的任務。
二、庫檔案的名字命名規範:
以lib開頭,隨後的部分指明是什麼庫(c代表c語言庫,m代表數學庫)。檔名的最後部分以.開始,最後給出庫檔案的型別。
.a代表傳統的靜態函式庫; .so代表共享函式庫。
三、靜態庫:
函式庫最簡單的形式是一組處於「準備好使用」狀態的目標檔案。當程式需要使用函式庫中的某個函式時,它包含乙個宣告該函式的標頭檔案。編譯器和鏈結器負責將程式**和函式庫結合在一起以組成乙個單獨的可執行檔案。使用 -l選項指明除標準c語言執行庫外還需要使用的庫。
靜態庫也稱為歸檔檔案(archive),按慣例其檔名都以.a結尾。比如c語言標準函式庫 /usr/lib/libc.a和x11函式庫/usr/lib/libx11.a。
四、舉例:
afxstd.h包含內容:
#ifndef afxstd_h
#define afxstd_h
#include#include//memset
#include//exit
#include//malloc free
#include#endif
linklist.h包含內容:
#ifndef linklist_h
#define linklist_h
typedef int elemtype;
typedef struct listnode
listnode;
typedef struct slist
slist;
listnode *buynode();
void initlist(slist *plist); //初始化
void freenode(listnode *pnode); //釋放某個節點
void insertlist(slist *plist, int pos, elemtype kx); //按位置進行插入
void pushfront(slist *plist, elemtype kx); //頭插
void pushback(slist *plist, elemtype kx); //尾插
void printlist(slist *plist); //列印輸出
#endif
afxstd.c包含內容:
linklist.c包含內容:
#include"../include/afxstd.h"
#include"../include/linklist.h"
listnode *buynode()
memset(s, 0, sizeof(listnode));
}void initlist(slist *plist)
void freenode(listnode *pnode)
free(pnode);
}void insertlist(slist *plist, int pos, elemtype kx)
listnode *p = &(plist->head);
for(i=0; i < pos-1; ++i)
listnode *q = buynode();
q->data = kx;
q->next = p->next;
p->next = q;
plist->cursize += 1;
}void pushfront(slist *plist, elemtype kx)
void pushback(slist *plist, elemtype kx)
void printlist(slist *plist)
printf("\n");
}
main.c包含內容:
#include"../include/afxstd.h"
#include"../include/linklist.h"
int main()
; int n = sizeof(ar)/sizeof(ar[0]);
initlist(&mylist);
for( i=0; i最後一步:
Linux下靜態庫生成和使用
1.庫是預編譯的目標檔案 object files 的集合,它們可以被鏈結程序式。靜態庫以後綴為 a 的特殊的存檔 archive file 儲存。2.標準系統庫可在目錄 usr lib與 lib中找到。比如,在類unix系統中c語言的數序庫一般儲存為檔案 usr lib libm.a。該庫中函式的...
Linux下靜態庫和動態庫的生成
1.何為靜態庫 何為動態庫 windows下 dll 是動態庫 lib是靜態庫 linux下 so是動態庫 a是靜態庫 靜態庫 在生成可執行程式的時候,會把函式的具體執行方式封裝到程式中,程式體積比較大,只要能編譯成功,就可以在任意相同的平台上執行 動態庫 在生成可執行程式的時候,只會把函式的介面封...
linux下靜態庫的生成和使用
1.庫是預編譯的目標檔案 object files 的集合,它們可以被鏈結程序式。靜態庫以後綴為 a 的特殊的存檔 archive file 儲存。2.標準系統庫可在目錄 usr lib與 lib中找到。比如,在類unix系統中c語言的數序庫一般儲存為檔案 usr lib libm.a。該庫中函式的...