成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

闡述Linux動態庫的顯式調用

運維 系統運維
十年的發展,Linux系統已經趕上了微軟,于是很多人開始學習Linux時,學習Linux,你可能會遇到Linux動態庫的顯式調用,這里將介紹Linux動態庫的顯式調用的解決方法,在這里拿出來和大家介紹下。

十年的發展,Linux系統已經趕上了微軟,于是很多人開始學習Linux時,學習Linux,你可能會遇到動態庫的顯式調用,這里將介紹動態庫的顯式調用的解決方法,在這里拿出來和大家介紹下。

顯式調用的含義是代碼出現庫文件名,用戶需要自己去打開和管理庫文件。其要點為:

⑴把dlfcn.h系統頭文件包含進來

⑵用dlopen函數打開庫文件,并指定打開方式

dllope的的第一個參數為共享庫的名稱,將會在下面位置查找指定的共享庫。

①環境變量LD_LIBRARY_PATH列出的用分號間隔的所有目錄。

②文件/etc/ld.so.cache中找到的庫的列表,由ldconfig命令刷新。

③目錄usr/lib。

④目錄/lib。

⑤當前目錄。

第二個參數為打開共享庫的方式。有兩個取值

①RTLD_NOW:將共享庫中的所有函數加載到內存

②RTLD_LAZY:會推后共享庫中的函數的加載操作,直到調用dlsym()時方加載某函數

⑶用dlerror()函數測試是否打開成功,并進行錯誤處理;

⑷用dlsym獲得函數地址,存放在一個函數指針中

⑸用獲得的函數指針進行函數調用。

⑹程序結束時用dlclose關閉打開的動態庫,防止資源泄露。

⑺用ldconfig工具把動態庫的路徑加到系統庫列表中

1、編寫測試文件

  1. //main.c 測試動態庫顯式調用的程序  
  2. #include<dlfcn.h>  //用于動態庫管理的系統頭文件    
  3. #include "myalib.h"http://要把函數的頭文件包含進來,否則編譯時會報錯  
  4. int main(int argc,char* argv[])  
  5. {  
  6. //聲明對應的函數的函數指針  
  7. void (*pTest)();  
  8.  //加載動態庫  
  9. void *pdlHandle = dlopen("libtest.so", RTLD_LAZY);  
  10. //錯誤處理  
  11. if(pdlHandle == NULL ){  
  12. printf("Failed load library\n");  
  13. return -1;  
  14. }  
  15. char* pszErr = dlerror();  
  16. if(pszErr != NULL)  
  17. {  
  18. printf("%s\n", pszErr);  
  19. return -1;  
  20. }  
  21. //獲取函數的地址  
  22. pTest = dlsym(pdlHandle, "test");  
  23. pszErr = dlerror();  
  24. if(pszErr != NULL)  
  25. {  
  26. printf("%s\n", pszErr);  
  27. dlclose(pdlHandle);  
  28. return -1;  
  29. }  
  30. //實現函數調用  
  31. (*pTest)();  
  32. //程序結束時關閉動態庫  
  33. dlclose(pdlHandle);  
  34. return 0;    

2、編譯測試文件

使用-ldl選項指明生成的對象模塊需要使用共享庫

gcc -o main -ldl main.c

執行完后就生成了一個main文件

3、執行測試程序

執行 ./main

輸出

test

說明成功。這就是Linux動態庫的顯式調用的介紹。

【編輯推薦】

  1. 配置筆記:Linux配置DNS服務器
  2. 講解RedHat Linux 5顯示中文的方法
  3. 教會你Redhat Enterprise Linux關閉SELinux
  4. 輕松完成Linux安裝KDE軟件包
  5. 闡述Redhat Linux配置遠程桌面
責任編輯:小霞 來源: 博客園
相關推薦

2010-01-07 17:42:23

Linux動態庫

2009-12-17 09:56:26

Linux添加驅動模塊

2009-09-17 13:10:48

linq動態排序

2023-03-30 15:07:57

Linux編程開發

2023-03-21 15:36:27

Linux編程

2009-12-02 14:09:52

2009-12-21 14:33:11

2009-12-09 14:15:39

2009-12-01 18:41:08

SUSE Linux

2009-12-23 10:50:57

Linux chmod

2010-03-10 14:48:24

2009-12-14 10:47:34

Linux makef

2009-11-30 10:54:59

solaris命令

2009-12-01 09:51:50

備份Linux內核

2010-01-06 17:06:05

Json格式

2010-03-04 09:51:07

Linux動態庫

2010-03-04 10:04:10

Linux動態庫

2010-06-29 15:58:26

Linux SNMP協

2023-03-15 15:58:11

Python動態庫C++

2009-12-10 10:25:12

Linux觸摸屏驅動
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 小h片免费观看久久久久 | 精品一二三区 | 视频二区| 日韩在线视频播放 | 国产成人综合在线 | 亚洲综合五月天婷婷 | 黄色一级毛片免费看 | 国产精品日韩欧美一区二区三区 | 欧美日韩国产在线观看 | 久草在线 | 日韩在线中文字幕 | 日本不卡免费新一二三区 | av网址在线播放 | 亚洲精品毛片av | 亚洲精品欧美一区二区三区 | 成人av电影免费在线观看 | 成人免费视频播放 | 亚洲国产精品成人久久久 | 玖玖视频国产 | 国产在线一区二 | 男女视频在线免费观看 | a免费视频| 久久这里只有精品首页 | 国产香蕉视频在线播放 | 欧美精品1区2区3区 精品国产欧美一区二区 | 国产精品一区在线播放 | 国产女人与拘做受视频 | 国产色99 | 青娱乐自拍 | 亚洲风情在线观看 | 午夜精品久久久久久久久久久久久 | 中文字幕影院 | 亚洲欧美国产毛片在线 | 日韩一区二区三区视频在线播放 | 精品欧美激情精品一区 | 精品国产99 | 亚洲iv一区二区三区 | 日韩欧美三级电影在线观看 | 欧美在线视频二区 | 高清国产午夜精品久久久久久 | 欧美高清视频一区 |