gcc编译
预处理 ->编译->汇编->链接
预处理
gcc -E helloworld.c -o helloworld.i
- 头文件展开;不检查语法错误,即可以展开任意文件;
- 宏定义替换;将宏名替换为宏值;
- 替换注释;将注释替换为空行;
- 展开条件编译;根据条件来展开指令;
编译
gcc -S helloworld.i -o helloworld.s
- 逐行检查语法错误;是整个编译4个步骤中最耗时的;
- 将c程序翻译成汇编指令;
汇编
gcc -c helloworld.s -o helloworld.o
- 翻译:将汇编指令翻译成对应的二进制编码
链接
gcc helloworld.o -o helloworld.exe
- 数据段合并;
- 数据地址回填;
- 库引入