1.动态加载库当一个可执行文件开始运行之后,动态链接器会加载程序的动态依赖列表中的所有共享库,但有时候需要延迟加载库是比较有用的。 如只在需要的时候加载一个插件。动态链接器的这项功能是通过一组 API 实现的。这组 API 被称为 dlopen API。dlopen API 使得程序能够在运行的时候打开一个共享库,根据名字在库中搜索一个函数,然后调用这个函数.在运行的时候才要这种方式加载的共享库通常被称为动态加载的库。dlopen(); //打开一个共享库,返回一个供后续调用的句柄dlsym(); //在库中搜索一个符号(一个保护函数或者变量的字符串)并返回其地址。dlclose(); //关闭之前打开的库dlerror(); //返回一个错误消息字符串要在Linux上使用 dlopen API 构建程序的时候必须指定 -ldl 选项以便与 libdl 库链接起来。dladdr(); //返回一个包含地址 addr 的相关信息.2.在主程序中访问符号假设使用 dlopen() 动态加载了一个共享库,然后使用 dlsym() 获取了动态库中 x() 函数的地址,然后调用 x()。如果 x() 函数中调用了 y(),那么通常会在程序加载的其中一个共享库中搜索 y()。有些时候需要让 x() 调用主程序中的 y() 实现(类似于回调机制)。为了达到这个目的就必须要使主程序的符号(全局作用域)对动态链接器可用,即在链接程序时使用 --export-dynamic 链接器选项。gcc -W1,--export-dynamic main.c或者gcc --export-dynamic main.c使用这些选项的一个就能够允许动态加载的库访问主程序中的全局符号。3.监控动态链接器 : LD_DEBUGLD_DEBUG=help date

42.Linux/Unix 系统编程手册(下) -- 共享库高级特性相关推荐

  1. linux/unix系统编程手册11-15

    title: linux/unix编程手册-11_15 date: 2018-05-27 11:53:07 categories: programming tags: tips linux/unix编 ...

  2. Linux/Unix系统编程手册 第三章:系统编程概念

    本章介绍系统编程的基础概念和一些后续章节用到的函数及头文件,并说明了可移植性问题. 系统调用是受控的内核入口,通过系统调用,进程可以请求内核以自己的名义去执行某些动作,比如创建子进程,执行I/O操作, ...

  3. Linux/UNIX系统编程手册gg

    Linux系统: "所见皆文件" 一个比较好的博客 一.Linux基础操作 Linux系统目录: bin:存放二进制可执行文件 boot:存放开机启动程序 dev:存放设备文件: ...

  4. Linux/Unix系统编程 五:进程

    进程是一个可执行程序的实例. 一.linux系统进程管理 1.进程管理的作用 判断机器健康状态 查看系统中所有进程 杀手进程 2.查看系统进程 1.ps -aux BSD操作系统格式: TTY说明: ...

  5. Linux系统编程手册-源码的使用

    Linux系统编程手册-源码的使用 转自:http://www.cnblogs.com/pluse/p/6296992.html 第三章后续部分重点介绍了后面章节所要使用的头文件及其实现,主要如下: ...

  6. Linux/Unix系统下nginx+php安装简明教程

    本文转载自Linux/Unix系统下nginx+php安装简明教程,请保留转载信息~ 一.安装nginx: 1. 安装pcre库,nginx的rewrite模板需用到pcre库: mkdir -p / ...

  7. 在Linux/Unix系统下用iconv命令处理文本文件中文乱码问题

    iconv命令是运行于linux/unix平台的文件编码装换工具.当我们在linux/unix系统shell查看文本文件时,常常会发现文件的中文是乱码的,这是由于文本文件的编码与当前操作系统设置的编码 ...

  8. 5w字总结 Unix系统编程学习笔记(面试向)(Unix环境高级编程/Unix环境程序设计)

    文章目录 一.计算 C语言的数据表示与处理 计算 C语言的基本运算操作 内存表和符号表 类型转换 函数类型的分析 指令 复合指令 句法 函数 函数激活(Activation Record) 函数激活定 ...

  9. ①Linux简明系统编程(嵌入式公众号的课)---总课时12h

    10.09 注意:这个是Linux高级编程的简明教程,是Linux应用程序的开发,而不是底层程序的开发. 内容是关于操作系统和网络编程的吗? Linux简明系统编程 〇.课程思维导图 〇.会用到的头文 ...

  10. 从入门到精通ARM(4412)-Linux内核驱动编程【下】-李志勇-专题视频课程

    从入门到精通ARM(4412)-Linux内核驱动编程[下]-247人已学习 课程介绍         嵌入式绝对是当前IT领域最炙手可热的话题了.其主要应用领域涵盖与人类相关的各行各业: * 消费电 ...

最新文章

  1. Java IO 体系(一): 装饰者模式
  2. NSArray利用Cocoa框架进行汉字排序
  3. 学生管理系统(SSM简易版)总结
  4. 反思学习方法:后推前 前推后
  5. Shell Here Document 免交互命令和Expect
  6. HTML ajax控件 目录树
  7. 一个好用的在线微信二维码设计网站
  8. docker理念:不可变基础设施
  9. 成功破解:世界杀软“金奖”得主BitDefender 2008(官方中文版 + 注册机下载)
  10. Please define INSTALL4J_JAVA_HOME to point to a suitable JVM 的解决办法
  11. Matlab中的两种曲线平滑函数
  12. PCIe简介及引脚定义
  13. linux上的python开发工具_linuxpython开发工具,在linux下开发python使用什么工具好
  14. 微信公众号开发模式几点介绍
  15. weight_decay一般设置为多少_建盏一般多少钱?建阳建盏定价的依据是什么?宋韵建盏为你解析...
  16. java ean13_【求大神指导】java实现EAN13条形码识别
  17. mysql左联和全等_Mysql7种join连接及mysql一些知识点-Go语言中文社区
  18. 基于SSM的植物花草养护交流网站设计
  19. [19保研]北京邮电大学计算机学院6月9日校园开放日活动安排
  20. Javascript 事件详解

热门文章

  1. Android 耳机插入过程分析 (AudioManager部分)
  2. 【转】async await 的前世今生(Updated)
  3. 中国智能硬件创新产业发展分析2017
  4. linux C 总结篇(线程)下
  5. html meta标签作用
  6. SqlHelper的编写
  7. manifest.json文件的 “name” “description” “version 字段解释
  8. windows 7 help 帮助文件无法打开的解决
  9. Word 参考文献的自动修改
  10. 送你一份价值5800元的技术干货PPT | 技术管理者工作坊强势来袭!