建立庫
靜態庫:在編譯時就拷貝到應用程式中,因此當多個應用程式同時引用乙個靜態庫時,記憶體中將會有呼叫函式的多個副本。
優點:節省編譯時間。
動態庫:在程式開始執行後呼叫庫函式時才被載入,被調函式的央存中只有乙個副本,
並且動態庫可以在程式執行期間釋放動態庫所占用的記憶體,騰出空間供其他程式使用。
建立靜態庫:
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 庫存在的意義 庫是別人寫好的現有的,成熟的,可以復用的 你可以使用但...