ELF格式:ELF是.o / .so的子集,还是ELF基本上是整个.o / .so?

时间:2016-07-07 03:55:03

标签: linux elf

我目前正在研究ELF格式。我想证实我认为是对的。

ELF是一种格式,它代表可执行文件和可链接格式。在linux中,一切都是ELF格式。

使用gcc编译带-c和-fPIC文件的代码时,它会将代码转换为带有ELF格式的.o文件。

如果我说.o / .so和linux可执行文件是ELF文件,这是正确的吗?或者是.o / .so文件中的ELF内容?换句话说,ELF是.o / .so的子集还是ELF基本上是整个.o / .so?

我想证实这一点,因为我想确保我理解这一点。很抱歉提出一个愚蠢的问题。

1 个答案:

答案 0 :(得分:1)

  

如果我说.o / .so和linux可执行文件是ELF文件,这是正确的吗?或者是.o / .so文件中的ELF内容?换句话说,ELF是.o / .so的子集还是ELF基本上是整个.o / .so?

是。对象文件(.o),共享库(.so)和可执行文件是四种类型的ELF文件中的三种。 (第四种类型是核心文件 - 崩溃进程状态的转储,有时用于事后调试。)

所有四种类型都使用相同的通用格式,但会有一些与其类型不同的差异。例如,可执行文件通常会有一个入口点,而目标文件和共享库却没有。