Linux靜態庫和動態庫的生成

2021-06-20 20:26:25 字數 1210 閱讀 8722

建立庫

靜態庫:在編譯時就拷貝到應用程式中,因此當多個應用程式同時引用乙個靜態庫時,記憶體中將會有呼叫函式的多個副本。

優點:節省編譯時間。

動態庫:在程式開始執行後呼叫庫函式時才被載入,被調函式的央存中只有乙個副本,

並且動態庫可以在程式執行期間釋放動態庫所占用的記憶體,騰出空間供其他程式使用。

建立靜態庫:

1,在乙個標頭檔案中宣告靜態庫所匯出的函式

2,在乙個原始檔中實現靜態庫所匯出的函式

3,編譯原始檔,生成可執行**

4,將可執行**所在的目標檔案加入到某個靜態庫中,並將靜態庫拷貝到系統預設的存放庫檔案目錄下。

mylib.h

#ifndef __mylib_h__

#define __mylib_h__

void welcome();

void outstring(const char* str);

#endif

mylib.c

#include "mylib.h"

#include

void welcome()

void outstring(const char* str)

gcc -o mylib.o -c mylib.c

ar rcs libmylib.a mylib.o

cp libmylib.a /usr/lib/libmylib.a

gcc -o test test.c -lmylib

#include "mylib.h"

#include

int main()

gcc -o test2 test2.c -l/home/openlab/ly/cfile/ -lmylib

ar rcs libmylib.a file1.o file2.o

動態庫的建立和使用

只要在編譯函式庫源程式時加上-shared即可

gcc -fpic -o mylib.o -c mylib.c

gcc -shared -o libttt.so mylib.o

gcc -fpic -shared -o libttt.so mylib.c

動態庫使用

gcc -o main main.c ./libmylib.so

cp libttt.so /usr/lib/libttt.so

gcc -o test test.c /usr/lib/libttt.so

linux 靜態庫和動態庫生成

靜態庫 ar rcs lib a xx1.o xx2.o 生成靜態庫 c 建立乙個庫 s 建立目標檔案索引,在建立較大的庫時,能加快時間 rablib lib a 為庫檔案建立索引。ar t lib a 檢視庫檔案內所含目標檔案名字 ar tv lib a 檢視庫檔案內所含目標檔案,顯示檔名 時間 ...

Linux 如何生成靜態庫和動態庫

1 linux下的庫 靜態庫和共享庫 動態庫 二者的不同點在於 被載入的時刻不同。靜態庫的 在編譯過程中已經被載入可執行程式,因此體積較大。共享庫的 是在可執行程式執行時才載入記憶體的,在編譯過程中僅簡單的引用,因此 體積較小。2 庫存在的意義 庫是別人寫好的現有的,成熟的,可以復用的 你可以使用但...

Linux 如何生成靜態庫和動態庫

1 linux下的庫 靜態庫和共享庫 動態庫 二者的不同點在於 被載入的時刻不同。靜態庫的 在編譯過程中已經被載入可執行程式,因此體積較大。共享庫的 是在可執行程式執行時才載入記憶體的,在編譯過程中僅簡單的引用,因此 體積較小。2 庫存在的意義 庫是別人寫好的現有的,成熟的,可以復用的 你可以使用但...