GCC
gcc编译器是Linux系统下最常用的c/c++编译器。上图为编译步骤。
1. 预处理
gcc -E
编译器对预处理命令进行处理(头文件包含、宏定义的扩展、条件编译的选择),得到源码文件xxx.i
gcc -E hello.c -o hello.i
2. 编译
gcc -S
将预处理得到的源码文件 xxx.i 进行语法词法分析,"翻译转换"产生机器语言的目标程序,此时仍是一种比C语言更底层的高级语言,得到机器语言的汇编文件xxx.s
gcc -S hello.i
3. 汇编
gcc -c
将汇编代码xxx.s翻译成机器码xxx.o,此时仍不可以运行出结果(到此,都不要main函数,main函数的作用就是用来连接最后一步运行结果)
gcc -c hello.s
4. 链接
把各种可执行的符号引用和符号定义转换成可执行文件中的合适信息,通常是虚拟地址。此时自动生成a.out
gcc hello.o