我目前正在研究ELF格式。我想证实我认为是对的。
ELF是一种格式,它代表可执行文件和可链接格式。在linux中,一切都是ELF格式。
使用gcc编译带-c和-fPIC文件的代码时,它会将代码转换为带有ELF格式的.o文件。
如果我说.o / .so和linux可执行文件是ELF文件,这是正确的吗?或者是.o / .so文件中的ELF内容?换句话说,ELF是.o / .so的子集还是ELF基本上是整个.o / .so?
我想证实这一点,因为我想确保我理解这一点。很抱歉提出一个愚蠢的问题。
答案 0 :(得分:1)
如果我说.o / .so和linux可执行文件是ELF文件,这是正确的吗?或者是.o / .so文件中的ELF内容?换句话说,ELF是.o / .so的子集还是ELF基本上是整个.o / .so?
是。对象文件(.o
),共享库(.so
)和可执行文件是四种类型的ELF文件中的三种。 (第四种类型是核心文件 - 崩溃进程状态的转储,有时用于事后调试。)
所有四种类型都使用相同的通用格式,但会有一些与其类型不同的差异。例如,可执行文件通常会有一个入口点,而目标文件和共享库却没有。