Linux系統下靜態庫的生成和使用

2021-08-21 15:46:52 字數 2654 閱讀 9310

一、

一組預先編譯好的函式的集合,這些函式都是按照可重用的原則編寫的。通由一組相互關聯的函式組成以執行某項常見的任務。

二、庫檔案的名字命名規範:

以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。該庫中函式的...