我想知道 Linux 中的目标文件有哪些格式?
我知道有两种类型的目标文件:
- 可执行文件,具有 ELF 格式
编译后但链接前由 gcc 生成的目标文件。
此类目标文件的格式是什么?
或者它们也是 ELF 格式,但具有一些与可执行文件不同的子格式?
链接器的工作是将这种类型的目标文件的格式转换为可执行文件的格式吗?
- 还有其他类型的目标文件吗?
答案1
核心转储也是某种对象文件,通常也是 ELF 格式。运行这个程序可能会产生一个名为“core”的文件:
int
main(int ac, char **av)
{
char *p = 0;
*p = 'a';
return 0;
}
我的file
命令说:
core: ELF 32-bit LSB core file Intel 80386, version 1 (SYSV), SVR4-style, from './dump'
答案2
是的!他们也是ELF。它们被称为 ELF 目标文件。