基本过程如下图所示:
C预处理器:负责扩展程序代码,包括将#include的文件插入,扩展#define 声明指定的宏。
编译器: 负责将扩展后的程序代码转为汇编代码,如上图所示两个文件p1.c和p2.c,转换后将产生两个汇编代码文件,名字为p1.s和p2.s。
汇编器: 负责将汇编代码转换为二进制目标代码,产生两个文件,名字为p1.o和p2.o。此时还没有填入地址的全局值。
链接器: 负责将所有代码文件和实现库函数(如printf)的代码合并,产生最终可执行代码文件。
基本过程如下图所示:
C预处理器:负责扩展程序代码,包括将#include的文件插入,扩展#define 声明指定的宏。
编译器: 负责将扩展后的程序代码转为汇编代码,如上图所示两个文件p1.c和p2.c,转换后将产生两个汇编代码文件,名字为p1.s和p2.s。
汇编器: 负责将汇编代码转换为二进制目标代码,产生两个文件,名字为p1.o和p2.o。此时还没有填入地址的全局值。
链接器: 负责将所有代码文件和实现库函数(如printf)的代码合并,产生最终可执行代码文件。