最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2017年10月31日 15:35:52   作者:walkingman321  
這篇文章主要介紹了Linux動(dòng)態(tài)庫(kù)函數(shù)的詳解的相關(guān)資料,希望通過(guò)本文能幫助到大家,讓大家理解掌握這部分的內(nèi)容,需要的朋友可以參考下

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

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

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)庫(kù)中最近的一次錯(cuò)誤

char *dlerror(void);

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

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

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

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

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"); 
} 

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

相關(guān)文章

最新評(píng)論

齐齐哈尔市| 廉江市| 马山县| 乌鲁木齐县| 依兰县| 井陉县| 白水县| 法库县| 巴林左旗| 肇源县| 大宁县| 舟山市| 巩义市| 敖汉旗| 滁州市| 五台县| 仪陇县| 铅山县| 德江县| 丹棱县| 伊宁市| 茌平县| 都江堰市| 开鲁县| 安吉县| 定边县| 青阳县| 新余市| 太白县| 株洲县| 阿坝县| 河津市| 吴江市| 乌兰察布市| 莱阳市| 民权县| 岗巴县| 安泽县| 正宁县| 邢台市| 永泰县|