您的位置:首页 > 运维架构

dlopen中几个flag的区别:RTLD_LAZY RTLD_NOW RTLD_GLOBAL

2013-07-30 11:23 1521 查看
void *dlopen(const char *filename, int flag);

其中flag有:RTLD_LAZY RTLD_NOW RTLD_GLOBAL,其含义分别为:

RTLD_LAZY:在dlopen返回前,对于动态库中存在的未定义的变量(如外部变量extern,也可以是函数)不执行解析,就是不解析这个变量的地址。

RTLD_NOW:与上面不同,他需要在dlopen返回前,解析出每个未定义变量的地址,如果解析不出来,在dlopen会返回NULL,错误为:

: undefined symbol: xxxx.......

RTLD_GLOBAL:它的含义是使得库中的解析的定义变量在随后的其它的链接库中变得可以使用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: