两种加载方式

(1)加载可执行文件,通过PT_INTERP加载动态链接器

(2)直接加载动态链接器,再由其加载可执行文件

On a typical ELF system such as Linux, the kernel is normally responsible for loading both the executable and the dynamic linker. The executable is invoked by filename with execve(). The kernel loads the executable into the process, and looks for a PT_INTERP entry in its ELF Program Headers; this specifies the filename of the dynamic linker (/lib/ld-linux.so.2 for glibc on Linux). If there is a PT_INTERP entry, the kernel loads this file too.

Either of these two ELF objects can be relocatable (ET_DYN) or require loading at a fixed position in address space (ET_EXEC). Most often, the dynamic linker is relocatable and the executable is fixed-position with a standard base address (0x08048000 on i386). Sometimes the executable is relocatable too (these are known as PIEs - position-independent executables). For relocatable objects, the kernel chooses the load address.

There is another way to load the two ELF objects: the dynamic linker can be invoked directly with execve(). If passed the filename of an executable, the dynamic linker will load the executable itself.

Linux中ELF格式 可执行文件+动态链接器 的加载相关推荐

  1. linux动态可执行文件,Linux中ELF格式 可执行文件+动态链接器 的加载

    两种加载方式 (1)加载可执行文件,通过PT_INTERP加载动态链接器 (2)直接加载动态链接器,再由其加载可执行文件 On a typical ELF system such as Linux, ...

  2. C 编译器、链接器、加载器详解

    原文请见 C 编译器.链接器.加载器详解 0. 预编译 在编译 C++ 程序的预处理阶段,源程序中的所有常量表达式都需要首先计算并替换为对应的具体数值. C语言编译器在对源代码编译之前,还需要进一步的 ...

  3. C编译器、链接器、加载器详解

    一.概述 C语言的编译链接过程要把我们编写的一个c程序(源代码)转换成可以在硬件上运行的程序(可执行代码),需要进行编译和链接.编译就是把文本形式源代码翻译为机器语言形式的目标文件的过程.链接是把目标 ...

  4. Linux下ELF格式可执行文件及动态链接相关部分的解析

    Linux下面的ELF文件主要由ELF头.程序头和各个段组成. 二进制可执行文件结构 本文使用的示例程序如下.首先把它编译为可执行文件,再使用Linux下面的hexdump命令,把可执行文件完全转换为 ...

  5. linux中elf文件的作用,Linux中ELF格式文件介绍

    一. ELF简介 ELF(Executable and Linkable Format)即可执行连接文件格式,是一种比较复杂的文件格式,但其应用广泛.与linux下的其他可执行文件(a.out,cof ...

  6. linux 重新加载驱动程序,在linux中模拟设备驱动程序崩溃。让python重新加载i

    你的代码现在崩溃的原因是,当驱动程序崩溃时,代表你的硬件的设备专用文件就会消失.您的代码仍然具有这些设备的打开文件句柄.根据您的代码在幕后到底在做什么,它可能会尝试向一个现在无效的文件句柄发出IOCT ...

  7. linux程序卸载动态库,Intel平台下linux中ELF文件动态链接的加载、解析及实例分析(二): 函数解析与卸载...

    在 IBM Bluemix 云平台上开发并部署您的下一个应用. 相信读者已经看过了 Intel平台下Linux中ELF文件动态链接的加载.解析及实例分析(一): 加载的内容了,了解了ELF文件被加载的 ...

  8. Linux的ELF格式分析

    为什么80%的码农都做不了架构师?>>>    第一部分: ELF格式概述 ELF(Executable and Linkable Format)是一种对可执行文件.目标文件以及库文 ...

  9. Linux逆向---ELF格式分析之节头

    1.查看节头 段是程序执行的必要组成部分,段可以被分割成若干个节,而节头表是对这些节的位置和大小的描述,主要是链接和调试使用的,而对程序的执行却不是必需的.因为对程序内存布局的描述已经由程序头表描述了 ...

最新文章

  1. ThinkPHP分页实例
  2. Microsoft Windows 7.0 build 7000 NAP测试--健康状态检测验证报告
  3. 学术前沿 | DeepMind最新成果:图表示学习算法推理~46页ppt
  4. 理解 Android 消息机制
  5. mysql网络异常_网络连接配置出现异常_网络连接配置无法修复_Mysql网络连接的性能配置项...
  6. Java中foreach 的用法以及注意事项
  7. 2021-06-29初识JQuery
  8. php tcp获取数据_php建立tcp服务请求数据双向通信问题
  9. STK 12.5.0发布
  10. vs code 的常用快捷键列表
  11. 如何抓取图片php,PHP网络爬虫之图片抓取
  12. rails分页(kaminari)
  13. win10更新时强制关机会如何
  14. Gitea:私有部署Git托管服务(私有Git仓)
  15. NPDCCH发送周期解析
  16. 网站 xjjdog.cn,敬请惠存
  17. ui设计和平面设计区别,平面设计好还是ui好
  18. css后台页面布局效果
  19. php中{ifp}{ife}{ifpp}是什么意思、作用
  20. 山东办理高新技术企业可以享受的税收优惠

热门文章

  1. C# 打开Word文档错误
  2. 2013年7月04日_回顾总结
  3. s3c44b0x开发板之BOOT ROM配置
  4. 大二暑假周进度总结07
  5. 2n皇后 - 回溯
  6. 如何快速入手一个JavaWeb项目
  7. [Android] 开发第二天
  8. 进程丶线程丶CPU关系简述
  9. HDU 5646 DZY Loves Partition
  10. 深入浅出学习Struts框架(九):分析Struts框架实例4