我目前正在研究 ELF 格式。我想确认一下我认为正确的事情。
ELF是一种格式,它代表可执行和可链接格式。在linux中,一切都是ELF格式。
当使用gcc编译带有-c和-fPIC文件的代码时,它会将代码转换为ELF格式的.o文件。
如果我说 .o/.so 和 linux 可执行文件是 ELF 文件,是否正确?或者 ELF 是 .o/.so 文件中的东西?换句话说,ELF 是 .o/.so 的子集还是 ELF 基本上是整个 .o/.so?
我想确认这一点,因为我想确保我理解这一点。抱歉问了一个愚蠢的问题。
Is it correct if I say .o/.so and linux executables are ELF files? or is ELF something inside a .o/.so file? In other words, is ELF a subset of .o/.so or is ELF basically the entire .o/.so?
是的。对象文件 (.o
)、共享库 (.so
) 和可执行文件 (.exe
) 是四种 ELF 文件类型中的三种。 (第四种类型是核心文件——崩溃进程状态的转储,有时用于事后调试。)
所有四种类型都使用相同的通用格式,但特定于其类型会有一些差异。例如,可执行文件通常有入口点,而目标文件和共享库则没有。
我是一名优秀的程序员,十分优秀!