linux 動態庫的生成與使用

2021-06-12 11:13:42 字數 1205 閱讀 6765

linux

2. 靜態鏈結與動態鏈結return (a+b);

}編譯動態庫:gcc -shared -o libadd.so add.c 生成 libadd.so

動態鏈結方法:在編譯程式時,指定要鏈結的庫檔案即可,此時呼叫共享庫只需要其標頭檔案即可。

示例:test.c

#include

#include

int add(int,int);

int main(int argc, char *argv)

編譯程式:gcc -ladd -o test test.c

-l 引數表示要鏈結的動態鏈結庫,若路徑不在標準庫檔案路徑下可用-l 包含。

動態載入方法:通過下列api完成

1. dl api

函式

描述

dlopen

使物件檔案可被程式訪問

dlsym

獲取執行了 dlopen 函式的物件檔案中的符號的位址

dlerror

返回上一次出現錯誤的字串錯誤

dlclose

關閉目標檔案

示例:

test.c

#include

#include

int main(int argc, char *argv)

func=dlsym(dl_handler,"add");

error =dlerror();

if(error!=null)

sum=(*func)(10,11);

printf("sum=%d",sum);

dlclose(dl_handler);

}編譯程式:gcc -otest test.c -ldl

-ldl 表明將 dllib 鏈結於該程式,即可呼叫dl的api

共享庫的路徑:可以放在系統共享庫目錄:/usr/lib下,也可以通過環境變數ld_library_path設定

Linux下動態庫 靜態庫的生成與使用

動態庫和靜態庫的介紹 一般情況下,在專案裡會把功能相似的 封裝成庫,方便使用和管理,同時增加了 的內聚性。庫分為兩種,一種為靜態庫,檔名以.a結尾,另一種是動態庫,檔名以.so結尾。靜態庫和動態庫的使用各有利弊。使用靜態庫的好處就是簡單,因為在鏈結的時候直接把靜態庫中的內容鏈結到可執行檔案中,鏈結完...

Linux動態庫的生成與使用指南

linux下動態庫檔案的檔名形如lib so,其中so是 shared object 的縮寫,即可以共享的目標檔案。在鏈結動態庫生成可執行檔案時,並不會把動態庫的 複製到執行檔案中,而是在執行檔案中記錄對動態庫的引用。程式執行時,再去載入動態庫檔案。如果動態庫已經載入,則不必重複載入,從而能節省記憶...

Linux動態庫生成與使用指南

linux下動態庫檔案的檔名形如lib so,其中so是 shared object 的縮寫,即可以共享的目標檔案。在鏈結動態庫生成可執行檔案時,並不會把動態庫的 複製到執行檔案中,而是在執行檔案中記錄對動態庫的引用。程式執行時,再去載入動態庫檔案。如果動態庫已經載入,則不必重複載入,從而能節省記憶...