ELF文件(可执行文件和链接格式)的生成不同于本机c编译器到交叉编译器。在本机C编译器和交叉编译器中使用ELF文件有什么用?
答案 0 :(得分:2)
编译器的工作是理想地从高级转换为低级。从C到汇编语言从JAVA到字节码等。文件输入,文件输出。通常人们不会看到编译器通常(但不是一个硬性和快速的规则)推出汇编语言(文本)然后被送到汇编程序然后变成精灵或者coff或者其他什么。无论你需要一个文件格式来存储信息,当信息变成二进制(机器代码)时你需要一些文件格式,任何文件格式。编译器的作者/设计者可以选择他们想要支持的文件格式,elf足够通用并且运行良好,所以这不是一个糟糕的选择。
与编译器完全无关,它只是一种文件格式,可用于存储汇编器和链接器的输出。你必须有一些文件格式。
工具链可能选择具有不同的默认文件格式,具体取决于目标或平台的组合,例如Windows上使用的gnu可能使.EXE文件相同的gnu源可以选择elf作为默认文件格式当编译为linux编译器时。其自然的扩展是gnu工具可能具有不同的默认文件格式,用于目标处理器和/或平台的其他组合。
Elf特别有点通用,目标处理器和平台的组合可能会使用某些标记和功能,因此您可能会看到不同风格的精灵。只需使用objcopy到intel hex格式,输出就会根据目标处理器类型而变化。
答案 1 :(得分:1)
来自维基百科:
ELF是可执行文件,目标代码的通用标准文件格式, 共享库和核心转储。
使用本机编译器还是交叉编译器与elf文件的生成方式无关。交叉编译器只考虑您正在编译不同于当前用于编译的HW平台的硬件平台。