好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > Linux動態庫函數的詳解

Linux動態庫函數的詳解

熱門標簽:申請400電話有什么用 400電話申請找 汨羅代理外呼系統 宿松高德地圖標注 4層電梯外呼控制系統設計 網絡電話外呼系統撥號軟件 天津智能外呼系統排名 貴陽400電話到哪里去辦理 電銷機器人加盟多少錢

Linux動態庫函數的詳解

加載動態庫

void *dlopen(const char *filename, int flag);

flag的可能值:

  •         RTLD_LAZY
  •         RTLD_NOW
  •         RTLD_GLOBAL
  •         RTLD_LOCAL
  •         RTLD_NODELETE (since glibc 2.2)
  •         RTLD_NOLOAD (since glibc 2.2)
  •         RTLD_DEEPBIND

這些flag的具體含義可使用man查看

返回動態庫中最近的一次錯誤

char *dlerror(void);

根據動態庫句柄和函數名稱,返回函數的地址

void *dlsym(void *handle, const char *symbol);

如果使用dlopen(NULL, flag>)得到句柄,通過這個句柄可以查找所有函數符號,只要那個函數符號所在的dll在加載時指定了RTLD_GLOBAL 

關閉動態庫

int dlclose(void *handle);

根據函數地址,返回函數名稱和其它信息

注意傳入地址只要落在函數代碼空間范圍之內即可,不需要是函數的起始地址

int dladdr(void *addr, Dl_info *info);
 
typedef struct {
   const char *dli_fname;/* Filename of defining object */
   void *dli_fbase;   /* Load address of that object */
   const char *dli_sname;/* Name of nearest lower symbol */
   void *dli_saddr;   /* Exact value of nearest symbol */
  } Dl_info;

 構造函數和析構函數(這兩個是屬性,而不是函數)

__attribute__((constructor))
__attribute__((destructor))

例如:

__attribute__((constructor)) void before_main() 
{ 
    printf("before main/n"); 
} 
 
__attribute__((destructor)) void after_main() 
{ 
  printf("after main/n"); 
} 

如有疑問請留言或者到本站社區交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

您可能感興趣的文章:
  • linux下編譯boost.python簡單方法
  • 深入探討Linux靜態庫與動態庫的詳解(一看就懂)
  • linux生成(加載)動態庫靜態庫和加載示例方法
  • Linux下g++編譯與使用靜態庫和動態庫的方法
  • 分析Windows和Linux動態庫
  • linux 程序、動態庫、靜態庫內部添加版本號和編譯時間詳解
  • 解決Linux程序編譯鏈接動態庫版本的相關問題
  • Linux靜態庫與動態庫實例詳解
  • 淺談Linux C語言動態庫及靜態庫
  • linux中使用boost.python調用c++動態庫的方法

標簽:烏蘭察布 廣東 海北 連云港 臨沂 昌都 贛州 撫州

巨人網絡通訊聲明:本文標題《Linux動態庫函數的詳解》,本文關鍵詞  Linux,動態,庫,函數,的,詳解,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Linux動態庫函數的詳解》相關的同類信息!
  • 本頁收集關于Linux動態庫函數的詳解的相關信息資訊供網民參考!
  • 推薦文章