Linux 下動態鏈結庫相關函式

2021-08-28 04:15:38 字數 1030 閱讀 6139

原型:void*dlsym(void* handle,const char* symbol)

handle是由dlopen開啟動態鏈結庫後返回的指標,symbol就是要求獲取的函式或全域性變數的名稱。

int add(int a,int b)

int sub(int a, int b)

int mul(int a, int b)

int div(int a, int b)

gcc -rdynamic -o main main.c -ldl

#include #include #include //動態鏈結庫路徑

#define lib_caculate_path "./libcaculate.so"

//函式指標

typedef int (*cac_func)(int, int);

int main()

//清除之前存在的錯誤

dlerror();

//獲取乙個函式

*(void **) (&cac_func) = dlsym(handle, "add");

if ((error = dlerror()) != null)

printf("add: %d\n", (*cac_func)(2,7));

cac_func = (cac_func)dlsym(handle, "sub");

printf("sub: %d\n", cac_func(9,2));

cac_func = (cac_func)dlsym(handle, "mul");

printf("mul: %d\n", cac_func(3,2));

cac_func = (cac_func)dlsym(handle, "div");

printf("div: %d\n", cac_func(8,2));

//關閉動態鏈結庫

dlclose(handle);

exit(exit_success);

}

Linux下動態鏈結庫和靜態鏈結庫

第一部分 編譯過程 預處理過程,負責標頭檔案展開,巨集替換,條件編譯的選擇,刪除注釋等工作。gcc e表示進行預處理。編譯過程,負載將預處理生成的檔案,經過詞法分析,語法分析,語義分析及優化後生成彙編檔案。gcc s表示進行編譯。彙編,是將彙編 轉換為機器可執行指令的過程。通過使用gcc c或者as...

Linux下動態鏈結庫呼叫

2014 11 01 10 39 3人閱讀收藏 編輯 刪除2013 06 08 20 52 48 分類 整合開發環境相關 舉報 字型大小訂閱 linux下的靜態鏈結庫,做起來比較容易,只要將目標檔案用ar打包就可以,下面寫一下動態鏈結庫的製作和使用方法,完全是根據個人理解和經驗總結,有不對的地方還請...

linux動態鏈結庫

在做完mini6410移植全攻略後,打算把自己的linux c筆記,貼出來和大家共享,有不對支援希望大家指出,謝謝!在上篇文章中,是對靜態鏈結庫的介紹,其實有了上面的介紹動態鏈結庫的製作就簡單了,這篇來製作動態鏈結庫 建立動態鏈結庫 cpp view plain copy print?gcc sha...