Linux學習筆記 動態庫的生成

2021-08-26 12:01:16 字數 948 閱讀 8772

庫分為兩種:

(1)共享庫 shared library 

(2)靜態庫 static library

通常共享庫也稱為動態庫。

使用g++命令來生成動態庫編譯,生成.o檔案 (編譯選項 ‐fpic )

g++ ‐c ‐fpic example.cpp ‐o example.o

鏈結,生成目標 .so檔案 ( 鏈結選項 ‐shared)

g++ ‐shared example.o ‐o libexample.so

(pic:position independent code位置無關**)

如下原始碼:

example.h

void print(const int startpos,const int endpos);
example.cpp

#include "example.h"

#include void print(const int startpos,const int endpos){

for(int i=startpos;i生成.o與.so檔案如下圖:

linux下動態庫的規範命名:

lib***.so

字首 lib

字尾 .so

其中 ***是庫的名稱

例如 , libexample.so

使用nm命令檢視庫中的符號

可以看見裡面有乙個printii,其中print為函式名,ii為兩個int型變數

Linux動態庫靜態庫的生成

函式庫 1 便於移植,方便使用 2 保密,保護智財權 靜態庫 編譯生成靜態庫 編譯生成靜態庫 1 把.c檔案編譯生成.o檔案 gcc c add.c 或gcc add.c c o add.c 2 把.o檔案編譯生成.a靜態庫 ar rc libadd.a add.o 3 靜態庫的使用 gcc mai...

Linux生成動態庫系統

linux下動態庫檔案的擴充套件名為 so shared object 依照約定,全部動態庫檔名稱的形式是libname.so 可能在名字中增加版本 這樣。執行緒函式庫被稱作libthread.so。靜態庫的檔名稱形式是libname.a。共享archive的檔名稱形式是libname.sa。共享a...

Linux靜態庫和動態庫的生成

建立庫 靜態庫 在編譯時就拷貝到應用程式中,因此當多個應用程式同時引用乙個靜態庫時,記憶體中將會有呼叫函式的多個副本。優點 節省編譯時間。動態庫 在程式開始執行後呼叫庫函式時才被載入,被調函式的央存中只有乙個副本,並且動態庫可以在程式執行期間釋放動態庫所占用的記憶體,騰出空間供其他程式使用。建立靜態...