Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C ELF文件在嵌入式系统中的应用?_C_Compilation_Linker_Embedded_Cross Compiling - Fatal编程技术网

C ELF文件在嵌入式系统中的应用?

C ELF文件在嵌入式系统中的应用?,c,compilation,linker,embedded,cross-compiling,C,Compilation,Linker,Embedded,Cross Compiling,ELF文件(可执行和链接格式)的生成不同于本机c编译器和交叉编译器。ELF文件在本机C编译器和交叉编译器中有什么用途?来自维基百科: ELF是可执行文件、目标代码、, 共享库和核心转储 使用本机编译器还是交叉编译器与elf文件的生成方式无关。交叉编译器只考虑到您是在不同的硬件平台上编译,而不是在当前用于编译的硬件平台上编译。编译器的工作是理想地从高到低进行转换。从C到汇编语言,从JAVA到字节码,等等。文件输入,文件输出。通常,人们看不到编译器通常(但不是一个硬性的规则)输出汇编语言(文本),然

ELF文件(可执行和链接格式)的生成不同于本机c编译器和交叉编译器。ELF文件在本机C编译器和交叉编译器中有什么用途?

来自维基百科:

ELF是可执行文件、目标代码、, 共享库和核心转储


使用本机编译器还是交叉编译器与elf文件的生成方式无关。交叉编译器只考虑到您是在不同的硬件平台上编译,而不是在当前用于编译的硬件平台上编译。

编译器的工作是理想地从高到低进行转换。从C到汇编语言,从JAVA到字节码,等等。文件输入,文件输出。通常,人们看不到编译器通常(但不是一个硬性的规则)输出汇编语言(文本),然后输入到汇编程序,然后变成elf或coff或任何东西。不要紧你需要一个文件格式来存储信息,当信息变成二进制(机器代码)时,你需要一些文件格式,任何文件格式。编译器作者/设计者可以选择他们想要支持的文件格式,elf足够通用并且工作良好,所以这不是一个坏的选择

与编译器完全无关,它只是一种文件格式,可用于存储汇编程序和链接器的输出。你必须有一些文件格式

根据目标或平台的组合,工具链可能会选择不同的默认文件格式,例如,windows上使用的gnu可能会使.EXE文件与编译为linux编译器时相同的gnu源可能会选择elf作为默认文件格式。自然的扩展是gnu工具可能有一个不同的默认文件格式,它们用于目标处理器和/或平台的其他组合


特别是Elf有点通用,目标处理器和平台的组合可能会使用某些标记和功能,因此您可能会看到不同风格的Elf。只需看看如何将objcopy转换为英特尔十六进制格式,输出会根据目标处理器类型而变化。

非常感谢您。。。