Skip to content

Latest commit

 

History

History
18 lines (15 loc) · 1.84 KB

dlopen的参数说明.md

File metadata and controls

18 lines (15 loc) · 1.84 KB

dlopen的参数说明

void* dlopen(const char* __filename, int __flag); 返回一个void *类型的handle否则返回NULL// 1、解析方式
RTLD_LAZY在dlopen返回前对于动态库中的未定义的符号不执行解析只对函数引用有效对于变量引用总是立即解析)。
RTLD_NOW需要在dlopen返回前解析出所有未定义符号如果解析不出来在dlopen会返回NULL错误为undefined symbol// 2、作用范围,可与解析方式通过“|”组合使用
RTLD_GLOBAL动态库中定义的符号可被其后打开的其它库重定位RTLD_LOCAL与RTLD_GLOBAL作用相反动态库中定义的符号不能被其后打开的其它库重定位如果没有指明是RTLD_GLOBAL还是RTLD_LOCAL则缺省为RTLD_LOCAL// 3、作用方式
RTLD_NODELETE在dlclose()期间不卸载库并且在以后使用dlopen()重新加载库时不初始化库中的静态变量这个flag不是POSIX-2001标准RTLD_NOLOAD不加载库可用于测试库是否已加载(dlopen()返回NULL说明未加载否则说明已加载),也可用于改变已加载库的flag先前加载库的 flag为RTLD_LOCAL用dlopen(RTLD_NOLOAD|RTLD_GLOBAL)后flag将变成RTLD_GLOBAL这个flag不是POSIX-2001标准RTLD_DEEPBIND在搜索全局符号前先搜索库内的符号避免同名符号的冲突这个flag不是POSIX-2001标准

(9条消息) dlopen参数总结_小妞的大熊的博客-CSDN博客_dlopen