这些步骤将源代码转换成可以在目标硬件上执行的机器代码。以下是这个过程的一般描述:
预处理(Preprocessing):
源代码(如 .c、.cpp、.s 等)首先被预处理。
预处理器处理源文件中的宏定义、条件编译指令、包含指令(如 #include)等。
预处理器的输出通常是一个 .i 或 .ii 文件,它包含了所有宏替换后的源代码。
编译(Compilation):
编译器将预处理后的代码转换成汇编代码。
对于高级语言(如 C 或 C++),编译器会进行语法分析、语义分析、优化等步骤。
编译器的输出通常是一个或多个 .s 或 .asm 文件,这些文件包含了汇编指令。
汇编(Assembly):
汇编器将汇编代码转换成机器代码。
汇编器处理汇编指令,将其映射到对应的机器指令,并生成相应的二进制数据。
汇编器的输出是对象文件(.o 或 .obj),这些文件包含了机器代码、调试信息和符号表。
链接(Linking):
链接器将多个对象文件以及库文件(.lib 或 .a)组合成一个单一的程序。
链接器解决外部引用,将分散在不同对象文件中的函数和变量进行地址重定位。
链接器还负责将程序中的各个部分放置到正确的内存地址,并添加启动代码、中断向量等。
链接器的输出是一个可执行文件(格式可能因操作系统和编译器而异,如 .exe、.out 或 .elf、.axf、.FLM)。
转换到二进制格式(Conversion to Binary):
在嵌入式开发中,通常需要将可执行文件转换成二进制格式,以便可以直接烧录到目标硬件上。
这个步骤可以通过不同的工具完成,如编程器或烧录软件。
转换工具将可执行文件中的机器代码和数据转换成目标硬件可以直接执行的二进制格式(.bin)。
在这个过程中,可能会根据目标硬件的要求进行额外的格式转换或数据调整。
烧录(Flashing):
最后,将生成的二进制文件烧录到目标硬件的存储器中。
烧录可以通过编程器、调试器或专门的烧录软件完成。
标签:BIN,文件,烧录,CODE,转换成,二进制,代码,编译器 From: https://www.cnblogs.com/icaowu/p/18187517