1. gcc -E hello.c 仅仅是预处理,即对代码中以#开头进行预处理,其他的地方没有改变,执行完后信息打印在终端,如果需要用文件存放,则应该在命令的后面加上重定向,既是 >>hello.i 后缀必须为.i的文件,因为这个命令生成的是.i 的文件。由预处理器完成(预处理阶段)
2. gcc -S hello.i 对预处理后的文件进行编译,生成的是汇编文件,默认生成hello.s 的文件,可用vim来查看汇编代码。由编译器完成(编译阶段)
3. gcc -c hello.s 对hello.s的汇编文件生成可重定位的目标程序,默认生成hello.o文件,这个文件是二进制的。由汇编器生成(汇编阶段)
4. gcc -o hello hello.s 这个就是生成可执行的文件了,主要经过链接,把需要的库函数,比如printf,即目标文件printf.o,经过某中方式链接完成(链接阶段)
5. -o参数,可表示为优化的程度, 如-o1, -o2 gcc test.c -o2 就比-o1的程度要高
6. -Wall 如gcc -Wall test.c -o test 即是发现程序中一系列的常见的错误警告