ELF(Executable and

Linking Format)是一种对象文件(.o or .obj,目标文件)的格式,用于定义不同类型的对象文件(Object

files)中都放了什么东西、以及都以什么样的格式去放这些东西。它自最早在 System V 系统上出现后,被 xNIX

世界所广泛接受,作为缺省的二进制文件格式来使用。

有四种ELF目标文件类型:

(1)可重定位的对象文件(Relocatable file)

这是由汇编器汇编生成的 .o

文件。

后面的链接器(linker)拿一些

Relocatable object files 作为输入,经链接处理后,生成一个可执行的对象文件 (Executable file)

或者一个可被共享的对象文件(Shared object file)。我们可以使用 ar 工具将众多的 .o Relocatable

object files 归档(archive)成 .a 静态库文件。

(3)可执行的对象文件(Executable file)

这我们见的多了,就是编译器生产的可执行程序。

文本编辑器vi、调式用的工具gdb、播放mp3歌曲的软件mplayer等等都是Executable object file。

主要要跟shell脚本,或者python脚本区分,这些脚本也是可执行的,但是它们的结构不是Executable

file,它们只是文本,由文件的第一行#!(shebang)定义系统应该调用那个程序来执行这个文本。

(3)可被共享的对象文件(Shared object file)

这些就是所谓的动态库文件,也即 .so

文件。如果拿前面的静态库来生成可执行程序,那每个生成的可执行程序中都会有一份库代码的拷贝。如果在磁盘中存储这些可执行程序,那就会占用额外的磁盘空间;另外如果拿它们放到Linux系统上一起运行,也会浪费掉宝贵的物理内存。如果将静态库换成动态库,那么这些问题都不会出现。

(4) Linux下的核心转存文件(Core Dump File)

当进程意外终止时,系统可以将该进程的地址空间的内容及终止时的一些其它信息转存到此Dump File。

可以使用file工具来查看ELF文件的类型:

[xinlin@localhost

test]$ which file

/usr/bin/file

[xinlin@localhost test]$ file

a.out

a.out: ELF 64-bit LSB executable, x86-64, version 1 (SYSV),

dynamically linked (uses shared libs), for GNU/Linux 2.6.32,

BuildID[sha1]=7c65ebc8c17e26b13a0355435175680a9e354b2a, not

stripped

[yihect@juliantec

test]$ file

sum.o sub.o test.o libsub.so test

sum.o: ELF 32-bit LSB relocatable, Intel 80386, version 1 (SYSV), not

stripped

sub.o: ELF 32-bit LSB relocatable, Intel 80386, version 1 (SYSV), not

stripped

test.o: ELF

32-bit LSB relocatable, Intel 80386, version 1 (SYSV), not

stripped

libsub.so: ELF 32-bit LSB shared object, Intel 80386, version 1

(SYSV), not stripped

test: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for

GNU/Linux 2.2.5, dynamically linked (uses shared libs), not

stripped

本文链接:https://www.maixj.net/ict/elf-o-20705

linux文件类型elf,[Linux]四种ELF对象文件类型相关推荐

  1. Linux C++多线程同步的四种方式

    目录 一.互斥锁 二.条件变量 三.读写锁 原文链接:Linux C++多线程同步的四种方式(非常详细)_Y先森0.0-CSDN博客 背景问题:在特定的应用场景下,多线程不进行同步会造成什么问题? 通 ...

  2. photon四种同步方式_【Linux】多线程同步的四种方式

    背景问题:在特定的应用场景下,多线程不进行同步会造成什么问题? 通过多线程模拟多窗口售票为例: #include #include#include#include#include#include us ...

  3. 更改Linux系统的Hostname的四种方式

    更改Linux系统的Hostname的四种方式 通常我们会在安装过程中设置系统的主机名 hostname.许多人不关心这一点,并且不更改主机名,即使例如安装系统的数据中心设置为非常愚蠢的东西(很可能他 ...

  4. 总结Linux修改主机名的四种方式

    总结Linux修改主机名的四种方式 看网上很多文章,有些比较简洁,但是有些很繁琐,不多说,参考各路大神的文章,以下是本人对这几种方式进行简要介绍,如有不足之处,还望各位大佬指点迷津. 方式一(个人推荐 ...

  5. Linux配置网络信息(四种方法)

    Linux配置网络信息(四种方法) 临时配置IP地址(2种方式) 1.ifconfig命令 语法: ifconfig <以太网接口> <IP地址> netmask <掩码 ...

  6. 简述css属性选择器的几种定义方式_css的四种使用方式 css规则按选择器类型分为那四种...

    HTML中嵌入CSS的四种方式及优先级,如何选择 1. 行内样式行内样式就是把 CSS 样式直接放在代码行内的标签中,一般都是放入标签的style属性中,由于行内样式直接插入标签中,故是最直接的一种方 ...

  7. JAVA中获取文件MD5值的四种方法

    JAVA中获取文件MD5值的四种方法其实都很类似,因为核心都是通过JAVA自带的MessageDigest类来实现.获取文件MD5值主要分为三个步骤,第一步获取文件的byte信息,第二步通过Messa ...

  8. 吃货最爱美食,四种美食短视频类型分享,出奇制胜才能吸粉

    吃货最爱美食,四种美食短视频类型分享,出奇制胜才能吸粉 吃货最爱美食,所有人都要吃东西,所以美食短视频从来都不会缺少粉丝.那么,如果我们想要做美食短视频的话,都可以选择哪些类型呢?这里分享四种美食短视 ...

  9. php保存文件和下载文件到本地的四种方法

    php保存文件和下载文件到本地的四种方法   本文操作环境:windows7系统.PHP7.1版,DELLG3电脑   php保存文件的方法   PHP下载保存文件到本地   经常需要点击按钮,然后弹 ...

最新文章

  1. BZOJ1196: [HNOI2006]公路修建问题
  2. 数据中心制冷基本原则及节能方案
  3. 【直播】如何设计性能更强大的深度卷积神经网络
  4. k8s部署nginx集群
  5. Bootstrap按钮组嵌套
  6. 计算机科学与技术专业实训手册,计算机科学与技术专业实习计划
  7. 用css去除chrome、safari等webikt内核浏览器对控件默认样式
  8. elementos php开发,PHPWord
  9. 在html中直接使用%3c php%3e,HTB-靶机-Calamity
  10. excel批量删除公式保留数据_Excel公式大批量输入,这几个技巧你一定不能错过...
  11. 金山WPS+Google文件=谷歌金山Office?
  12. android回溯机制,Android事件分发机制全面解析
  13. 恢复服务器误删文件,云服务器误删文件恢复
  14. 8583 mac 字符选择 java 实现_转 8583包 mac算法
  15. Dim Temp%的意思
  16. Linux vi vim 宏 批量操作 重复操作 宏录制
  17. 记一次集成微信支付的故事
  18. 诺基亚symbian 手册汇编
  19. 【简书如何删除专题?】
  20. 舔狗日记 API数据接口

热门文章

  1. 【数据结构与算法】之面试必考的“二分算法”系统梳理
  2. 2018年第九届蓝桥杯 - 省赛 - C/C++大学B组 - F.递增三元组
  3. 教小学妹学算法:搜索算法解决迷宫问题
  4. 《算法竞赛入门经典》 例题 4-4 信息编码 (Message Decoding,ACM,ICPC World Finals 1991,UVa 213)
  5. 【Qt】Qt之网格布局
  6. 【Linux】一步一步学Linux——bc命令(233)
  7. 【Android】对话框 AlertDialog
  8. [Qt教程] 第24篇 数据库(四)SQL查询模型QSqlQueryModel
  9. 【算法】prim算法(最小生成树)(与Dijkstra算法的比较)
  10. C++学习笔记-----operator=函数处理自赋值