dlopen、dlsym、dlclose
dlopen、dlsym、dlclose都是作加载动态库之用。dlopen以指定模式打开指定的动态连接库文件,并返回一个句柄给调用进程,dlerror返回出现的错误,dlsym通过句柄和连接符名称获取函数名或者变量名,dlclose来卸载打开的库
dlopen
1. dlopen函数原型:
void* dlopen(const char* pathName, int mode)
2. mode在Linux下面有几种方式:
解析方式
- RTLD_LAZY:暂缓决定,在dlopen返回前,对于动态库中的未定义的符号不执行解析(只对函数引用有效,对于变量引用总是立即解析)
- RTLD_NOW:立即决定,在dlopen返回前,解析出所有未定义的符号
作用范围
- RTLD_GLOBAL: 动态库中定义的符号可被其后打开的其他库重定位
- RTLD_LOCAL: 动态库中定义的符号不能被其后打开的其他库重定位。
作用方式
- RTLD_NODELETE:在dlclose()期间不卸载库,并且在以后使用dlopen()重新加载库时不初始化库中的静态变量。这个flag不是POSIX-2001标准。
- RTLD_NOLOAD: 不加载库,可用于测试库是否已经加载(dlopen()返回NULL说明未加载,否则说明加载),也可用于改变已加载库的flag,
- RTLD_DEEPBIND:在搜索全局符号前先搜索库内的符号,避免同名符号的冲突
3. 返回值
成功则返回引用这个数据库的句柄,如果失败则返回NULL
dlopen、dlsym、dlclose相关推荐
- linux dlopen 源码,采用dlopen、dlsym、dlclose加载动态链接库
采用dlopen.dlsym.dlclose加载动态链接库 转载请标注,熬夜写的文章,挺辛苦 ... 环境 系统: 16.04.1-Ubuntu 编译器: gnu 5.4.0 python: 2.7. ...
- Linux C++ libdl.so dlfcn.h使用方法(dlopen()、dlsym()、dlclose()、dlerror())(用于动态链接库操作)(懒加载、立即加载)共享库符号、动态库
文章目录 dlfcn.h解析 - dlopen():打开一个动态链接库文件并返回一个句柄,该句柄用于后续的操作,如查找符号.关闭库等. - dlsym():在打开的动态链接库中查找指定的符号,并返回符 ...
- gcc编译出现dlopen、dlerror、dlsym、dlcolse的解决方法
gcc编译出现dlopen.dlerror.dlsym.dlcolse的解决方法 参考文章: (1)gcc编译出现dlopen.dlerror.dlsym.dlcolse的解决方法 (2)https: ...
- 采用dlopen、dlsym、dlclose dlopen dlerror加载动态链接库【总结】
1.前言为了使程序方便扩展,具备通用性,可以采用插件形式.采用异步事件驱动模型,保证主程序逻辑不变,将各个业务已动态链接库的形式加载进来,这就是所谓的插件.linux提供了加载和处理动态链接库的系统调 ...
- 【转】采用dlopen、dlsym、dlclose加载动态链接库
1.前言 为了使程序方便扩展,具备通用性,可以采用插件形式.采用异步事件驱动模型,保证主控制逻辑不变,将各个业务以动态链接库的形式加载进来,这就是所谓的插件.linux提供了加载和处理动态链接库的系统 ...
- 采用dlopen、dlsym、dlclose加载动态链接库
1.前言 为了使程序方便扩展,具备通用性,可以采用插件形式.采用异步事件驱动模型,保证主程序逻辑不变,将各个业务已动态链接库的形式加载进来,这就是所谓的插件.linux提供了加载和处理动态链接库的系统 ...
- Linux 中 dlopen、dlsym、dlclose、dlerror函数
编译时候要加入 -ldl (指定dl库) dlopen 基本定义 功能:打开一个动态链接库 [喝小酒的网摘]http://blog.const.net.cn/a/17154.htm 包含头文件: ...
- 动态链接库(dlopen、dlsym、dlclose)(Linux)
一.介绍 动态链接,是在程序已经执行时,加载链接的方法 二.有关动态链接库生成 1.在导出处使用 extern "C"申明 extern "C" {void f ...
- 采用dlopen、dlsym、dlclose加载动态链接库【总结】
1.前言 为了使程序方便扩展,具备通用性,可以采用插件形式.采用异步事件驱动模型,保证主程序逻辑不变,将各个业务已动态链接库的形式加载进来,这就是所谓的插件.linux提供了加载和处理动态链接库的系统 ...
最新文章
- 树莓派视觉小车 -- 物体跟踪(OpenCV)
- 阅读mutate源码学习dplyr
- hdu2561 第二小整数(排序)
- Modular Multiplicative Inverse(模乘逆元)
- Log4j使用详解(log4j.XML格式)
- 我的 Vue.js 学习日记 (七) - 事件与修饰符
- MySQL查询过程及Scheme设计与数据类型优化
- react --- 生命周期 给子组件传递数据
- 微信小程序学习目录推荐
- mysql binlog 备份_Mysql数据库的增量备份与还原
- 序号-element-序号根据页数和行数计算
- Atitit atimvc rest原理与自定义实现t33 目录 1.1. Web.xml	1 1.2. MvcFilter	2 1.3. jerserMeth	4 原理 过滤器 过滤即可
- Linux 操作系统原理 — 内存 — 大页内存
- 跟华为悦盒V9U机顶盒拼了
- 【基金量化研究系列】大类资产配置研究(六)——多资产风险平价策略
- 全站仪和手机连接软件_测量员APP全站仪设站的的应用说明
- NAT ALG原理与应用
- 6羽的调侃并不彻底的激怒武青云
- uniapp 启动页视频
- debian8.7 下配置fai机环境