预处理:gcc -E hello.c -o hello.i
编 译:gcc -S hello.i -o hello.s
汇 编:gcc -c hello.s -o hello.o
链 接:gcc hello.o -o hello_elf
-E:只进行预处理
-S:只进行预处理和编译
-c:只进行预处理、编译和汇编
-o filename:指定生成的输出文件名为filename
预处理:删掉注释(因为不需要执行),将include的头文件的内容展开,放在可执行的cpp文件开头(相当于头文件里面的函数声明,变量定义等都放在了开头),同时替换define的变量
编译:将代码转换成汇编,这一步检查语法
汇编:将汇编代码转换成01的二进制文件
链接:把相应的系统动态库等链接起来,生成可执行文件