Linux動態(tài)庫函數(shù)的詳解
Linux動態(tài)庫函數(shù)的詳解
加載動態(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查看
返回動態(tài)庫中最近的一次錯誤
char *dlerror(void);
根據(jù)動態(tài)庫句柄和函數(shù)名稱,返回函數(shù)的地址
void *dlsym(void *handle, const char *symbol);
如果使用dlopen(NULL, <flag>)得到句柄,通過這個句柄可以查找所有函數(shù)符號,只要那個函數(shù)符號所在的dll在加載時指定了RTLD_GLOBAL
關(guān)閉動態(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ù)(這兩個是屬性,而不是函數(shù))
__attribute__((constructor)) __attribute__((destructor))
例如:
__attribute__((constructor)) void before_main() { printf("before main/n"); } __attribute__((destructor)) void after_main() { printf("after main/n"); }
如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
- linux下編譯boost.python簡單方法
- 深入探討Linux靜態(tài)庫與動態(tài)庫的詳解(一看就懂)
- linux生成(加載)動態(tài)庫靜態(tài)庫和加載示例方法
- Linux下g++編譯與使用靜態(tài)庫和動態(tài)庫的方法
- 分析Windows和Linux動態(tài)庫
- linux 程序、動態(tài)庫、靜態(tài)庫內(nèi)部添加版本號和編譯時間詳解
- 解決Linux程序編譯鏈接動態(tài)庫版本的相關(guān)問題
- Linux靜態(tài)庫與動態(tài)庫實例詳解
- 淺談Linux C語言動態(tài)庫及靜態(tài)庫
- linux中使用boost.python調(diào)用c++動態(tài)庫的方法
相關(guān)文章
智能監(jiān)測自動重啟Apache服務(wù)器的Shell腳本
這篇文章主要介紹了智能監(jiān)測自動重啟Apache服務(wù)器的Shell腳本,實現(xiàn)監(jiān)控Apache不可用時,第一次強制重啟,第二次郵件通知管理員,需要的朋友可以參考下2014-07-07win下調(diào)用putty執(zhí)行命令腳本分享
這篇文章主要介紹了win下調(diào)用putty執(zhí)行命令腳本,可以利用這個實現(xiàn)一些自動化的工作,需要的朋友可以參考下2014-03-03Linux?Shell如何用ssh命令統(tǒng)計分布式集群信息詳解
作為命令的ssh,作用就是在一臺linux機器上去登錄到另一臺linux機器,下面這篇文章主要給大家介紹了關(guān)于Linux?Shell如何用ssh命令統(tǒng)計分布式集群信息的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-07-07Shell腳本實現(xiàn)亂序排列文件內(nèi)容的多種方法(洗牌問題)
這篇文章主要介紹了Shell腳本實現(xiàn)亂序排列文件內(nèi)容的多種方法(洗牌問題),本文給出3個Shell腳本和一個Python腳本解決亂序排列文件內(nèi)容問題,需要的朋友可以參考下2015-01-01shell編程中for循環(huán)語句的實現(xiàn)過程及案例
Bash?Shell中主要提供了三種循環(huán)方式:for、while和until,下面這篇文章主要給大家介紹了關(guān)于shell編程中for循環(huán)語句的實現(xiàn)過程及案例,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-04-04