-dynamic-linker     file
    设置动态连接器(dynamic linker)的名字。默认的动态连接器或者是/lib64/ld-linux-x86-64.so.2 或者是/usr/lib/libd1.so.1

装载附加的共享库

在ELF系统上,为了执行一个ELF文件,内核要把控制权交给动态连接器/lib64/ld-linux-x86-64.so.2(在linux上动态连接器是/lib64/ld-linux-x86-64.so.2,版本不同也会不同的,在默认的redhat6.2上是/lib/ld-linux.so.2)。在绝对路径/lib/ld-linux.so.1以二进制存放着。假如动态连接器不存在,没有哪个ELF可执行文件能运行。

动态连接器执行以下一个步骤完成从程序到进程映象:

1.分析可执行文件中的动态信息section,决定需要哪些库。

2.定位和映象(map)那些共享库,并且分析它们动态信息section决定是否需要附加的共享库。

3.为可执行程序和那些需要的共享库执行重定位。

4.调用共享库中提供的任何初始化函数并且安排共享库提供的清除(cleanup)函数在共享库卸栽出进程空间的时候运行。

5.传控制给程序

6.为应用程序提供函数的迟延装定服务

7.为应用程序提供动态转载服务。

环境变量LD_PRELOAD设置共享库名或者用":"把文件名隔开。动态连接器在任何那些请求的共享库之前把环境变量LD_PRELOAD的共享库装载到进程地址空间去。例如:

# LD_PRELOAD=./mylibc.so myprog

这里./mylibc.so将第一时间map到程序myprog的空间。因为动态连接器在找寻标号的时候总是使用第一次碰到的标号,所以我们可以使用LD_PRELOAD来覆盖标准共享库中的函数。这个特性对程序员来说是很有用的,可用来在还没有建好整个共享库的时候对单个函数功能先做调试实验。

我们可以这样:
#gcc -c -fPIC -O3 print.c
#gcc -shared print.o -o print.so.1.0
创建自己的共享连接库

dynamic-linker相关推荐

  1. mysql-4.0.20 use on scounix 5.0.7 error :dynamic linker:..:could not open libgthreads.so help!!!!

    周五, 2007/07/06 - 17:28 - zhenghz mysql-4.0.20 use on scounix 5.0.7 error :dynamic linker:..:could no ...

  2. Linux Dynamic Shared Library LD Linker

    目录 1. 动态链接的意义 2. 地址无关代码: PIC 3. 延迟版定(PLT Procedure Linkage Table) 4. 动态链接相关结构 5. 动态链接的步骤和实现 6. Linux ...

  3. Linker Linking (a detail introduction)

    http://eulertao.ycool.com/post.1822428.html 超级长的文章,连载20天,作者牛啊- http://www.airs.com/blog/archives/cat ...

  4. Android源码学习——linker(4)

    本文学习的源码参考AndroidXRef,版本为Lollipop 5.1.0_r1. 前面讲完了so的加载,这一章来讲so的链接过程.so的链接是实际上就是完成符号的重定位. 分别看下PrelinkI ...

  5. android linker 执行流程

    通过前一篇的博客,我们知道,在linux kernel加载完可执行程序后,在需要解释器的情况下,返回用户空间时会先跳到解释器的函数中执行,对于android平台而已,就是先跑到_start()函数,然 ...

  6. android linker加载

    linker是android的加载器和连接器,同时也是其自身的加载器. bionic/linker/arch/arm64/begin.S 29#include <private/bionic_a ...

  7. android linker 开启日志

    打开linker日志 Enable logging of dlopen/dlsym and library loading errors for apps (Available in Android ...

  8. bionic linker代码分析(1) - linker自举

    Android在启动一个新的进程的时候,是由execv函数族trap到内核,由kernel去检查和加载可执行文件:kernel做完可执行文件的加载同时会加载/system/bin/linker,然后由 ...

  9. Android Linker详解(二)

    Android Linker详解(二) Android Linker详解(二) 本文目的 So的链接 So重定位 总结 本文目的 接上篇Linker源码详解(一),本文继续来分析Linker的链接过程 ...

  10. android bionic log打印,如何让android的bionic中的linker输出调试信息

    缺省情况下bionic的linker是不会输出调试信息的,因为Linker.c里一开始就写着: * Do NOT use malloc() and friends or pthread_*() cod ...

最新文章

  1. Windows下命令行Git无法显示中文问题解决方案
  2. 使用curl上传带有文件的POST数据
  3. tensorflow 进阶 五 ---TensorFlow conv2d原理及实践
  4. ubuntu为什么每次用apt安装软件前都要更新(apt-get update)一下?
  5. 组件分页_如何创建分页组件
  6. shell if多个条件判断_萌新关于Excel VBA中IF条件判断语句的一点心得体会
  7. Bootstrap mouseover 下拉菜单 Enable Hover for Bootstrap Nav Dropdowns
  8. is not a function_libcxx 的 std::function 源码分析
  9. 输入框回车多个文本_输入框测试用例,你真的了解输入框测试嘛!
  10. BackgroundWorker DoWork事件调用多次的问题
  11. centos7,PPTP搭建简易教程
  12. 2022年iOS最新面试(底层基础)问题答案
  13. 从频域角度重新思考注意力机制——FcaNet
  14. 2016word多级列表 一级标题居中后偏左
  15. python5_学习python5面向
  16. 对RAM,ROM,NOR/NAND FLASH等常见内存设备类型的理解
  17. Win11右键菜单还原Win10
  18. 转:张五常:比知识更重要的,是思维方式
  19. Thingsboard 开源 IoT 物联网平台入门
  20. itextword加公章 java_使用itext和freemarker来根据Html模板生成PDF文件,加水印、印章...

热门文章

  1. 股票实时数据 python_Tushare 获取股票实时数据
  2. LED数码管数字数据集
  3. [概念] 敏感性分析(Sensitivity Analysis) 和龙卷风图(tornado diagram) 1
  4. 反向造IP的泡泡玛特,离中国的迪士尼还有多远?
  5. MySQL 内部 临时表 图文 详解
  6. 瑞友天翼应用虚拟化系统存在远程代码执行漏洞
  7. 你真的懂 Unicode 和 UTF-8 是什么关系吗?来看看这个就彻底懂了!
  8. World Finals 2017爆OJ记
  9. Select2(4.0.6)城市搜索
  10. Java学习 QQ 群