如果你的程序中使用dlopen、dlsym、dlclose、dlerror 显示加载动态库,需要设置链接选项 -ldl

加载动态链接库,首先为共享库分配物理内存,然后在进程对应的页表项中建立虚拟页和物理页面之间的映射。

你可以认为系统中存在一种引用计数机制, 每当一个进程加载了共享库(在该进程的页表中进行一次映射),引用计数加一;

一个进程显式卸载(通过dlclose等)共享库或进程退出时,引用计数减 一,

当减少到0时,系统卸载共享库。

  1. 打开动态链接库:dlopen,函数原型void *dlopen (const char *filename, int flag); dlopen用于打开指定名字(filename)的动态链接库,并返回操作句柄。

  2. 取函数执行地址:dlsym,函数原型为: void *dlsym(void *handle, char *symbol); dlsym根据动态链接库操作句柄(handle)与符号(symbol),返回符号对应的函数的执行代码地址。

  3. 关闭动态链接库:dlclose,函数原型为: int dlclose (void *handle); dlclose用于关闭指定句柄的动态链接库,只有当此动态链接库的使用计数为0时,才会真正被系统卸载。

  4. 动态库错误函数:dlerror,函数原型为: const char *dlerror(void); 当动态链接库操作函数执行失败时,dlerror可以返回出错信息,返回值为NULL时表示操作函数执行成功。

原文链接:https://www.cnblogs.com/SZxiaochun/p/7718621.html

gcc -ldl 选项作用相关推荐

  1. 【Script系列】makefile的override指示符与gcc -ldl选项作用

    DATE: 2019-2-20 1.参考 Makefile中override 指示符 gcc -ldl 选项作用 Makefile 使用总结 2.makefile中override指示符释义 2.1. ...

  2. gcc -D选项的作用

    gcc -D选项在man中的说明如下: -D name            Predefine name as a macro, with definition 1. -D name=definit ...

  3. GCC 编译 C++ 程序分步骤流程(预处理 gcc -E、编译 gcc -S、汇编 gcc -c 和链接 gcc 以及 gcc -o 选项)

    C 或者 C++ 程序从源代码生成可执行程序的过程,需经历 4 个过程,分别是预处理.编译.汇编和链接. 同样,使用 GCC 编译器编译 C 或者 C++ 程序,也必须要经历这 4 个过程.但考虑在实 ...

  4. gcc 优化选项 -O1 -O2 -O3 -Os 优先级

    Gcc 编译优化简介 gcc 提供了为了满足用户不同程度的的优化需要,提供了近百种优化选项,用来对{编译时间,目标文件长度,执行效率}这个三维模型进行不同的取舍和平衡.优化的方法不一而足,总体上将有以 ...

  5. 【GCC】gcc警告选项汇总--编辑中|gcc编译选项

    目录 前言 请求或取消警告选项 GCC编译选项 参考原文:https://blog.csdn.net/qq_17308321/article/details/79979514 前言 警告:不是错误的, ...

  6. linux命令gcc常用选项

    linux下调试时gcc用的非常比较,下面看gcc常用选项. E 激活预处理:头文件.宏等展开(.i文件) S 激活预处理.编译:生成汇编代码(.s文件) c 激活预处理.编译.汇编:生成目标文件(. ...

  7. Linux gcc 基本选项

    先看一下虚拟机上ubuntu的IP: 在主机win10编辑一个简单c程序,使用ssh来传到ubuntu:但是提示不可达: vi手动编辑一个简单程序: cat看一下: ubuntu要安装openssh- ...

  8. linux命令和选项作用,linux tar 命令中 -f选项作用

    2011-06-25 回答 可以看看tar的man页,上面说得很清楚了(看英文的man页,中文的已经过时了,好多地方不对). 对于tar命令,x表示解包(不是解压缩),v表示显示详细过程,f表示使用文 ...

  9. 《深入分析GCC 》——2.5 GCC调试选项

    本节书摘来自华章出版社<深入分析GCC >一书中的第2章,第2.5节,作者 王亚刚 ,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 2.5 GCC调试选项 G ...

最新文章

  1. js颜色选择器 制作分析
  2. [转]REMOTE_ADDR,HTTP_CLIENT_IP,HTTP_X_FORWARDED_FOR
  3. 如何显示jQuery中的加载微调器?
  4. Hibernate, 想说爱你不容易
  5. 汉仪尚巍手书_官宣,汉仪字库入选“十大著作权合作伙伴”啦!
  6. java栈 类 堆_详细介绍Java中的堆和栈
  7. http://www.cnblogs.com/langjt/p/4281477.html
  8. 引用js实现checkbox批量选中
  9. 牛逼哄哄的 MQ 到底有啥用?
  10. Ubuntu下安装vim以及常用命令
  11. html转pdf后修改,pdf转换器smallpdf转成HTML后怎么排版
  12. 如何在WP7中使用自定义字体
  13. mybatis3的中文官方文档
  14. 校验电话号码 手机号码正则表达式————转载
  15. 江苏大学数字图像处理MATLAB人脸识别,MATLAB人脸识别代码
  16. 总结一下自学到现在的学习方法感悟
  17. 渗透测试 ( 10 ) --- 扫描 web目录、文件 (dirb、wfuzz、wpscan、nikto)
  18. FreePascal - Typhon在Windows10 X64下的使用问题!
  19. BeanDefinition到Bean
  20. 足球比赛中的数据科学

热门文章

  1. python入门指南pdf-跟老齐学Python+从入门到精通 PDF 下载
  2. pythonapp下载-python编程狮app下载
  3. python现在好找工作吗-学完Python好找工作吗?为什么有人学完找不到工作?
  4. python编程和c语言编程的区别-C语言 python Java 等主要流行编程语言优劣对比
  5. python 类-python--类
  6. 简明python教程购买-简明python教程哪版(python看什么书)
  7. spring中aop设计与实现
  8. UDP和TCP中的伪首部
  9. 在Windows Mobile和Wince(Windows Embedded CE)下如何使用.NET Compact Framework开发进程管理程序...
  10. 安卓开发笔记(二十六):Splash实现首页快速开屏功能