linux文件类型elf,[Linux]四种ELF对象文件类型

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值