亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Solaris > 正文

solaris中有類似windows的DLL有關的函數嗎?

2024-07-26 00:29:38
字體:
來源:轉載
供稿:網友
發信人: cpu (奔騰的心), 信區: Solaris 
標 題: Re: solaris中有類似windows的DLL有關的函數
發信站: 華南網木棉站 (Fri Aug 7 19:36:46 1998), 轉信 

【 在 irene (yoyo) 的大作中提到: 】 
: 如題 
呵呵當然有,window那套動東東很多機制都是抄unix的 
比如system(32)/*.dll是就是仿照unix的/usr/lib/*.so 
unix的/usr/lib/*.so就是unix的動態庫(dynamic library) 
給程序動態鏈接用的,反之/usr/lib/*.a是靜態庫,程序編譯 
鏈接時就將相關函數鏈入目標文件。 

實際上泥cc -o yyy yyy.o -lXXX那個XXX就是告訴cc找/usr/lib/libXXX.so.. 
yyy.o聲明調用了libXXX.so中的函數,鏈接成功的目標文件yyy在運行時將動態 
調用libXXX.so的函數,至于cc -o yyy yyy.o libxxx.a那就不同了呵呵 
cc對-l參數的缺省鏈接方式是動態鏈接,即只鏈接符號,不鏈入函數實體。 
對鏈接方式可man ld。 

言歸正傳,既然有動態庫,就肯定有與之相關的函數,window有LoadLibrary, 
偶solaris有dlopen,就是dynamic library open,window能讓泥做 
土版DLL,偶solaris早就能讓泥自己生產.so了呵呵,下面具體說明怎樣調用 
動態庫libXXX里的函數而又不需要在cc中指定-lXXX。 

首先是dlopen,格式: 

#include 
void * dlopen(const char *pathname, int mode); 
返回一個void *類型的handle,否則返回NULL。 

pathname就是泥所要打開的動態庫,如果這個庫聲明鏈接了其它庫,即對其它 
庫有依賴關系,那么所有相關有依賴關系的庫都會被打開,這些打開的庫稱之 
為組(group)。 

mode是打開方式: 

RTLD_LAZY:打開動態庫后只重定位庫中數據地址引用而不重定位而函數引用, 
函數引用在該函數要被激活時才定位,的確LAZY呵呵,但省開銷;) 
RTLD_NOW: 與上者相比,動態庫一被打開就重定位所有函數的引用。 

RTLD_GLOBAL:打開動態庫里的全局符號可以被其它所有庫重定位。 
RTLD_LOCAL: 打開動態庫里的全局符號只能被同組庫重引用。 
RTLD_GROUP: 只有相關組的符號才允許重定位?? 
RTLD_PARENT:發dlopen調用的對象中的符號對被dlopen對象可見。 
RTLD_WORLD: 。。。呵呵太晦澀了我翻譯的我都看不明白;( 

總之,一個RTLD_LAZY已經夠用了呵呵;) 

然后是得到重定位的數據或函數引用: 
#include 
void *dlsym(void *handle, const char *name) 
意義明顯,handle即dlopen的返回值,name即泥要引用的在動態庫變量或函 
數名稱。成功返回重定位后的符號地址,失敗返回NULL。 

最后是關閉動態庫:int dlclose(void *handle), 
一看就明白,懶得解釋了;) 

下面給一個例子增加感性認識,該例子調用動態庫client.so中的函數 
int client_request(char *),該函數返回0或-1并根據不同錯誤設置 
字符串err_info(也定義在client.so中): 

# include 
# include 
# include 

# define TRUE 0 
# define FALSE -1 

main( ) 

char buf[64]; 
void *handle; /* 動態庫句柄 */ 
char *err_info; /* 要引用的動態庫中的一個變量 */ 
int (*client_request)(char *); /* 要引用的一個函數 */ 

/* 打開動態庫client.so */ 
if ((handle = dlopen("client.so", RTLD_LAZY)) == NULL) { 
perror("dlopen"); 
exit(-1); 


/* 得到函數名client_request的引用 */ 
if ((client_request = 
(int (*)(char *))dlsym(handle, "client_request")) == NULL) { 
perror("dlsym client_request"); 
exit(-1); 


/* 得到變量名err_info的引用 */ 
if ((err_info = 
(char *)dlsym(handle, "err_info")) == NULL) { 
perror("dlsym err_info"); 
exit(-1); 

for(;;) { 
gets(buf); /* 從標準輸入讀入命令串 */ 
if (strcmp(buf, "exit") == TRUE) { 
dlclose(handle); /* 關閉動態庫 */ 
return 0; 

PRintf("request:%s/n", buf); 
client_request(buf); /* 調用動態庫中的函數 */ 
printf("ask: %s/n", err_info); /* 引用動態庫中的變量 */ 




最后是編譯問題,怎樣編譯成.so文件呢?很簡單用ld或者cc -G就可以了,比如: 
cc -G yyy.so yyy.o others.o -ldl 
如果這個yyy.o有引用了其它動態庫的函數呢?那么用cc -G ... -l了 
比如yyy.o引用了socket函數,那么 
cc -G yyy.so yyy.o others.o -ldl -lsocket即可。 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
中文亚洲视频在线| 欧美成人精品在线视频| 91久久国产婷婷一区二区| 久久久久久网站| 欧美日韩在线看| 欧美在线免费看| 91精品在线国产| 成人写真福利网| 国产精品一区二区女厕厕| 77777亚洲午夜久久多人| 欧美在线一区二区三区四| 亚洲精品suv精品一区二区| 性欧美xxxx| 57pao国产成人免费| 日韩精品视频在线播放| 亚洲欧美在线第一页| 欧美视频免费在线| 国产日韩欧美一二三区| 欧美性猛交xxx| 欧美又大又硬又粗bbbbb| 国产成人涩涩涩视频在线观看| 人体精品一二三区| 欧美激情视频播放| 日韩性生活视频| 国产成人精品综合久久久| 韩国国内大量揄拍精品视频| 日韩在线资源网| 亚洲女人天堂色在线7777| 中文字幕日韩在线视频| 亚洲精品影视在线观看| 国产精品女人久久久久久| 亚洲free性xxxx护士白浆| 这里精品视频免费| 日韩三级影视基地| 国产精品久久视频| 国产色综合天天综合网| 精品久久久国产精品999| 狠狠躁夜夜躁久久躁别揉| 久色乳综合思思在线视频| 成人精品一区二区三区电影免费| 精品视频在线播放色网色视频| 大胆人体色综合| 国产精品视频精品| 国产精品露脸av在线| 精品国内产的精品视频在线观看| 国产热re99久久6国产精品| 日韩av一区在线观看| 日韩国产中文字幕| 一区二区三区无码高清视频| 亚洲中国色老太| 国产精品丝袜高跟| 欧美一级淫片videoshd| 美女扒开尿口让男人操亚洲视频网站| 国产精品免费网站| 亚洲色图国产精品| 欧美中文字幕在线| 一区二区三区四区精品| 久久亚洲精品中文字幕冲田杏梨| 日韩最新av在线| 尤物yw午夜国产精品视频明星| 在线视频日本亚洲性| 欧美大片欧美激情性色a∨久久| 日韩福利伦理影院免费| 欧美极品少妇xxxxⅹ裸体艺术| 另类少妇人与禽zozz0性伦| 国产精品福利网站| 欧美性生交xxxxx久久久| 亚洲国产精品久久精品怡红院| 欧美精品在线极品| 日韩中文在线中文网在线观看| 亚洲日韩中文字幕在线播放| 亚洲一区二区三区四区视频| 日韩一区二区欧美| 欧美自拍大量在线观看| 欧美日本国产在线| 亚洲石原莉奈一区二区在线观看| 亚洲欧美在线免费| 久久天天躁狠狠躁夜夜爽蜜月| 国产精品第10页| 日韩av免费观影| 日本免费久久高清视频| 久久久久亚洲精品国产| 亚洲人午夜精品免费| 4p变态网欧美系列| 2021久久精品国产99国产精品| 精品久久久久久中文字幕大豆网| 国产91精品在线播放| 国产精品爽黄69天堂a| 国产日韩av在线播放| 欧美激情亚洲另类| 日韩中文字幕久久| 中文字幕在线视频日韩| 成人亲热视频网站| 91产国在线观看动作片喷水| 亚洲精品日韩av| 中文字幕国产日韩| 成人黄色免费片| 国产精品高清免费在线观看| 中文字幕亚洲综合久久| 久久久久久九九九| 亚洲欧美在线免费| 午夜美女久久久久爽久久| 亚洲成色777777在线观看影院| 国产精品国产三级国产aⅴ浪潮| 成人国产精品一区二区| 久久久久久久一区二区| 日韩中文字幕网| 日韩欧美aⅴ综合网站发布| 亚洲一区精品电影| 精品久久久免费| 欧美日韩日本国产| 国产精品自拍偷拍视频| 中文综合在线观看| 麻豆国产va免费精品高清在线| 国产日韩精品入口| 久久久久久久久久久久久久久久久久av| 欧美亚洲国产视频| 亚洲女人天堂成人av在线| 国产精品久久久久久久久久免费| 欧美日韩国产一区在线| 国产精品爽黄69天堂a| 日韩精品在线免费播放| 亚洲精品电影网在线观看| 国产亚洲精品久久久| 日韩高清电影好看的电视剧电影| 久久夜精品香蕉| 在线视频免费一区二区| 精品中文字幕在线2019| 国产精品99导航| 国产精品扒开腿爽爽爽视频| 最新的欧美黄色| 欧美主播福利视频| xxxxx成人.com| 国产精品吹潮在线观看| 国产精品99蜜臀久久不卡二区| 5566日本婷婷色中文字幕97| 亚洲女在线观看| 日韩成人在线网站| 精品国产91久久久久久老师| 国产一区av在线| 日韩av电影中文字幕| 国产一区二区免费| 久久人人爽国产| 国产精品99蜜臀久久不卡二区| 久久天天躁狠狠躁夜夜躁| 视频直播国产精品| 国产成人精品视频| 欧美孕妇毛茸茸xxxx| 久久影院在线观看| 国产精品成人免费视频| 欧美激情奇米色| 欧美成人久久久| 国产一区二区在线免费| 91精品国产综合久久久久久久久| 欧美大片在线看免费观看| 日韩中文字幕视频在线观看| 久久久免费观看| 亚洲精品中文字幕女同| 日日狠狠久久偷偷四色综合免费| 91夜夜揉人人捏人人添红杏| 亚洲国产精品悠悠久久琪琪| 欧美大胆a视频| 国产精品久久久久久影视| xx视频.9999.com|