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