新闻详情

新闻详情

首页 / 资讯中心 / 详情

Linux动态加载并调用动态库(.so)实现方式

发布时间:2026/9/27 1:06:47来源:尧图网络
Linux动态加载并调用动态库(.so)实现方式
念加载动态链接库首先为共享库分配物理内存然后在进程对应的页表项中建立虚拟页和物理页面之间的映射。你可以认为系统中存在一种引用计数机制 每当一个进程加载了共享库在该进程的页表中进行一次映射引用计数加一一个进程显式卸载通过dlclose等共享库或进程退出时引用计数减 一当减少到0时系统卸载共享库。头文件1#include dlfcn.h相关函数介绍(1)打开动态链接库dlopen12345678910111213函数原型void *dlopen (const char *filename, int flag);flag分为这两种RTLD_NOW在dlopen返回前解析出全部没有定义的符号解析不出来返回NULL。RT_GLOBAL动态库定义的符号可被其后打开的其他库解析。RT_LOCAL和上面相反不能被其他库解析。默认。RTLD_LAZY暂缓决定等有需要时再解出符号返回值:打开错误返回NULL成功返回库引用dlopen用于打开指定名字(filename)的动态链接库(最好文件绝对路径)并返回操作句柄。(2)取函数执行地址dlsym123函数原型void *dlsym(void *handle, char *symbol);dlsym根据动态链接库操作句柄(handle)与符号(symbol)返回符号对应的函数的执行代码地址。(3)关闭动态链接库dlclose1234函数原型int dlclose (void *handle);returns 0 on success, and nonzero on error.dlclose用于关闭指定句柄的动态链接库只有当此动态链接库的使用计数为0时,才会真正被系统卸载。(4)动态库错误函数dlerror123函数原型const char *dlerror(void);当动态链接库操作函数执行失败时dlerror可以返回出错信息返回值为NULL时表示操作函数执行成功。示例123456789101112131415161718192021222324#include stdio.h#include dlfcn.hint main(int argc, char **argv) {void *handle;double (*cosine)(double);char *error;handle dlopen (/tmp/libtest.so, RTLD_LAZY);if(!handle) {fprintf (stderr,%s , dlerror());exit(1);}cosine (double(*)(double))dlsym(handle,cos);if((error dlerror()) ! NULL) {fprintf (stderr,%s , error);exit(1);}printf(%f , (*cosine)(2.0));dlclose(handle);return0;}编译编译动态库命令1g -o libtest.so -rdynamic -shared -fPICtest.cpp编译主程序命令1g -o mainTest mainTest.cpp -rdynamic -ldl注意要加-ldl 和 -rdynamic 链接选项总结以上为个人经验希望能给大家一个参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

STC8H8K64U ADC实战:从寄存器配置到滤波校准 2026/9/27 2:53:39

STC8H8K64U ADC实战:从寄存器配置到滤波校准

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
网站建设有几种工具?不懂代码选哪家好,看完这篇不踩坑 2026/9/27 2:53:39

网站建设有几种工具?不懂代码选哪家好,看完这篇不踩坑

网站建设有几种工具?不懂代码选哪家好,看完这篇不踩坑 自己不会代码想做网站,是不是在后台搜“网站建设哪家好”时,结果多到眼花?其实,选对工具比找对服务商更重要。很多站长一上来就问“哪家建站公司好”,结果被忽悠买了一堆用不上的功能,或者因为选…

阅读更多 →
少儿信息学竞赛复赛试题docx解析与模拟赛备赛指南 2026/9/27 2:53:39

少儿信息学竞赛复赛试题docx解析与模拟赛备赛指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
Better Notes 模板导入指南:Zotero 文献笔记自定义结构实操 2026/9/27 2:53:39

Better Notes 模板导入指南:Zotero 文献笔记自定义结构实操

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
SquareLine Studio+STM32 TFT彩屏UI开发实战 2026/9/27 2:53:32

SquareLine Studio+STM32 TFT彩屏UI开发实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
网站开发使用api对seo对比评测:解决拖稿痛点 2026/9/27 2:53:32

网站开发使用api对seo对比评测:解决拖稿痛点

网站开发使用api对seo对比评测:解决拖稿痛点 改个需求建站公司拖一周,这种痛谁懂?后端说接口没调通,前端说等数据,SEO专员问页面权重何时生效,三方互相甩锅,项目卡死在中间。很多前端新手入行就踩这个坑,以为写了个API调用完事,结果上线…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉