假设源文件为:tmp.c
预处理阶段:
编译器驱动程序调用C语言预处理器(cpp),生成ASCII中间文件(.i)
gcc选项为“-E”
gcc -E tmp.c -o tmp.i
编译阶段:
驱动程序运行C编译器(cc1),生成ASCII汇编语言文件(.s)
gcc选项为"-S"
gcc -S tmp.i -o tmp.s
汇编阶段:
驱动程序运行汇编器(as),生成可重定位目标文件(relocatable object file)(.o)
gcc选项为"-c"
gcc -c tmp.s -o tmp.o
链接阶段:
驱动程序运行链接器程序(ld),生成可执行文件(executale object file)
gcc tmp.o -o tmp
参考:
《嵌入式Linux应用程序开发详解》
《深入理解计算机系统》