以GCC编译器为例:
第一步,预处理,包括语法检查等工作。
$ gcc -P abc.c
会生成abc.i文件。
第二步,编译,由源程序生成汇编语言代码。
$ gcc -S abc.c
会生成abc.s文件,这个文件就是汇编代码。
第三步,汇编,编译器生成目标代码,一个源程序生成一个目标代码。
$ gcc -c abc.c
会生成abc.o文件
第四部,链接, 链接器从目标代码生成可执行文件。
$ gcc abc.o
目标代码包括机器码和符号表(函数及变量名)。链接器的主要作用是通过符号表在库文件和其它模块中找到在目标代码中引入或未定义的符号(函数及变量名),将几个目标代码合成可执行文件。