濮阳杆衣贸易有限公司

主頁 > 知識(shí)庫 > Linux動(dòng)態(tài)庫函數(shù)的詳解

Linux動(dòng)態(tài)庫函數(shù)的詳解

熱門標(biāo)簽:申請(qǐng)400電話有什么用 400電話申請(qǐng)找 汨羅代理外呼系統(tǒng) 宿松高德地圖標(biāo)注 4層電梯外呼控制系統(tǒng)設(shè)計(jì) 網(wǎng)絡(luò)電話外呼系統(tǒng)撥號(hào)軟件 天津智能外呼系統(tǒng)排名 貴陽400電話到哪里去辦理 電銷機(jī)器人加盟多少錢

Linux動(dòng)態(tài)庫函數(shù)的詳解

加載動(dòng)態(tài)庫

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查看

返回動(dòng)態(tài)庫中最近的一次錯(cuò)誤

char *dlerror(void);

根據(jù)動(dòng)態(tài)庫句柄和函數(shù)名稱,返回函數(shù)的地址

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

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

關(guān)閉動(dòng)態(tài)庫

int dlclose(void *handle);

根據(jù)函數(shù)地址,返回函數(shù)名稱和其它信息

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

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;

 構(gòu)造函數(shù)和析構(gòu)函數(shù)(這兩個(gè)是屬性,而不是函數(shù))

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

例如:

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

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

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

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

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Linux動(dòng)態(tài)庫函數(shù)的詳解》,本文關(guān)鍵詞  Linux,動(dòng)態(tài),庫,函數(shù),的,詳解,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Linux動(dòng)態(tài)庫函數(shù)的詳解》相關(guān)的同類信息!
  • 本頁收集關(guān)于Linux動(dòng)態(tài)庫函數(shù)的詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    朔州市| 天全县| 中牟县| 阜阳市| 丰城市| 高台县| 德江县| 长岛县| 阜新| 鹿邑县| 沿河| 罗源县| 娱乐| 新丰县| 固安县| 南城县| 台北市| 德兴市| 东乡族自治县| 江北区| 天峨县| 静宁县| 平谷区| 松滋市| 宁阳县| 泽州县| 手游| 贺兰县| 竹北市| 精河县| 绥宁县| 文水县| 当阳市| 凭祥市| 平谷区| 陆良县| 苍山县| 察隅县| 中西区| 睢宁县| 河池市|