动态加载库(DL库)是指在程序运行期间按需加载的函数库,与程序启动时即加载的共享库不同。这种机制特别适用于插件或模块化架构,使主程序能够在运行时根据需要动态载入功能模块,提升灵活性和可扩展性。在Linux系统中,动态加载库的文件格式与共享库相同,通常为.so文件,区别主要在于加载时机和方式。系统提供了一套专门的API,如dlopen、dlsym、dlclose和dlerror等,用于打开动态库、查找函数或变量符号、处理错误以及关闭库文件,从而实现对动态库的完整控制与管理。
1、 动态加载库函数
2、 首个参数为共享库函数的字符名称
3、 第二个参数为标志位
4、 延迟加载,符号使用时才解析。
5、 立即加载,不延迟解析符号。
6、 返回值为通用指针类型,成功时返回句柄(可视为首地址),失败则返回空指针。
7、 用于开启并载入动态链接库文件
8、 获取动态链接错误信息
9、 用于获取dlopen等函数调用时最近一次错误的详细信息。
10、 动态符号查找函数
11、 第一个参数为dlopen函数返回的句柄。
12、 第二个参数为字符串类型的符号,代表函数名称。
13、 成功时返回函数内存地址,失败则返回空指针。
14、 根据句柄和函数名称,获取其在内存中的对应地址。
15、 关闭动态链接库函数
16、 关闭由参数handle指定的共享库,若成功则返回0,失败返回非零值。当该共享库未被任何程序使用时,系统将释放其所占内存。
17、 编译链接时请添加 -ldl 选项以确保正确运行。
评论
更多评论