首页 > 其他分享 >加载器、链接器、动态链接器概念

加载器、链接器、动态链接器概念

时间:2023-07-19 15:44:57浏览次数:39  
标签:00 headers header program 动态 链接 加载

动态链接器:

共享库(shared library)是致力于解决静态库缺陷的一个现代创新产物。共享库是一个目标模块,在运行或加载时,可以加载到任意的内存地址,并和一个在内存中的程序链接起来。这个过程称为动态链接(dynamic linking),是由一个叫做动态链接器(dynamic linker)的程序来执行的。

链接器:

将多个可重定位目标文件生成可执行目标文件的过程称为链接,完成此功能的部件称为链接器(ld)

加载器

加载器(loader)将可执行目标文件中的代码和数据从磁盘复制到内存中,然后通过跳转到程序的第一条指令或入口点来运行该程序。这个将程序复制到内存并运行的过程叫做加载。

修改一个二进制文件的动态链接器方法:

patchelf --set-interpreter /path/to/new/dynamic/linker your_program

readelf -h a.out输出信息:

ELF Header:
  Magic:   7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 
  Class:                             ELF64
  Data:                              2's complement, little endian
  Version:                           1 (current)
  OS/ABI:                            UNIX - System V
  ABI Version:                       0
  Type:                              EXEC (Executable file)
  Machine:                           Advanced Micro Devices X86-64
  Version:                           0x1
  Entry point address:               0x41cc40
  Start of program headers:          64 (bytes into file)
  Start of section headers:          82900248 (bytes into file)
  Flags:                             0x0
  Size of this header:               64 (bytes)
  # program header的大小是56字节
  Size of program headers:           56 (bytes)
  # 9个program header
  Number of program headers:         9
  # section header的大小是64字节
  Size of section headers:           64 (bytes)
  # 42个section header
  Number of section headers:         42
  Section header string table index: 39

标签:00,headers,header,program,动态,链接,加载
From: https://www.cnblogs.com/lifewithlight/p/17565774.html

相关文章

  • Linux的nm查看动态和静态库中的符号
    功能列出.o.a.so中的符号信息,包括诸如符号的值,符号类型及符号名称等。所谓符号,通常指定义出的函数,全局变量等等。 使用nm[option(s)][file(s)]有用的options:-A在每个符号信息的前面打印所在对象文件名称;-C输出demangle过了的符号名称;-D打印动态符号;-l使用对......
  • 6 链接
    链接(linking)是将各种代码和数据片段收集并组合成为一个单一文件的过程,这个文件可被加载(复制)到内存并执行。链接可以执行于编译时(compiletime),也就是在源代码被翻译成机器代码时;也可以执行于加载时(loadtime),也就是在程序被加载器(load-er)加载到内存并执行时;甚至执行于运行......
  • android 加载assets 本地json
    Android加载Assets本地JSON的实现作为一名经验丰富的开发者,我很荣幸能够教会你如何在Android应用中加载本地JSON文件。下面我将逐步介绍整个实现过程,并提供相应的代码示例和注释。实现步骤首先,我们来看一下加载Assets本地JSON的实现步骤:步骤说明1获取AssetsManager对......
  • JQuery ComboBox 如何让数据重新加载并清空选项
    1、场景有两个下拉框,1个是产品类型 下拉框,1个是项目代码 下拉框项目类型下拉框的值需要根据产品类型下拉框,进行调整。这个时候,每次选中产品类型下拉框,项目代码下拉框的值,都要重新进行加载 2、如何进行重新加载$('#abc').combobox('loadData',intelProjCodeCombox......
  • 实际上手体验maven面对冲突Jar包的加载规则
    一、问题背景相信大家在日常的开发过程中都遇到过Jar包冲突的问题,emm,在最近处理业务需求时我也遇到了不同版本jar包冲突导致项目加载出错的问题。主要是一个完整的项目会不可避免的使用第三方的Jar包来实现功能开发,各种第三方包之间可能会存在依赖关系,不同版本的依赖就会可能导致......
  • vue-element-admin改为从后台拿动态路由
    改为从后台拿动态路由,大概如下步骤:1、后台增加接口,返回动态路由数据2、前端增加请求动态路由接口请求3、修改src/route/index.js去掉原有的动态路由,增加组件名和组件对象映射map4、修改src/store/modules/permission.js修改当前权限判断处理方法 generateRoutes一、后......
  • jdbc-plus是一款基于JdbcTemplate增强工具包,基于JdbcTemplate已实现分页、多租户、动
    ......
  • 代码随想录算法训练营第57天 | ● 647. 回文子串 ● 516.最长回文子序列 ● 动
     第九章 动态规划part17●  647. 回文子串  ●  516.最长回文子序列●  动态规划总结篇 今天 我们就要结束动态规划章节了,大家激不激动!!!   详细布置   647. 回文子串    动态规划解决的经典题目,如果没接触过的话,别硬想 直接看题解。https:......
  • 代码随想录算法训练营第58天 | ● 739. 每日温度 ● 496.下一个更大元素 I - 第1
     第十章 单调栈part01 ●  739. 每日温度 ●  496.下一个更大元素 I    详细布置    739. 每日温度  今天正式开始单调栈,这是单调栈一篇扫盲题目,也是经典题。 大家可以读题,思考暴力的解法,然后在看单调栈的解法。 就能感受出单调栈的巧妙 ......
  • 代码随想录算法训练营第59天 | ● 503.下一个更大元素II ● 42. 接雨水 - 第10章
     第十章 单调栈part02 ●  503.下一个更大元素II ●  42. 接雨水    详细布置   503.下一个更大元素II  这道题和 739. 每日温度 几乎如出一辙,可以自己尝试做一做 https://programmercarl.com/0503.%E4%B8%8B%E4%B8%80%E4%B8%AA%E6%9B%B4%E5%......