1、gcc的编译过程 ( 参数分别为:E S c , 输出文件参数-o )
- 预处理:.c —> .i C文件,头文件展开、宏替换、去注释
gcc -E sum.c -o sum.i
// 将sum.c预处理生成sum.i文件 -
编译器:.i —> .s 汇编文件,C语言代码变成汇编代码
gcc -S sum.i -o sum.s
// 将预处理文件编译成汇编文件 -
汇编器:.s —> .o 二进制文件,汇编代码变成二进制代码
gcc -c sum.s -o sum.o
// 将汇编代码汇编成二进制文件 -
链接器:.o —> .out 可执行文件,将函数库中的代码组合到目标文件中
gcc sum.o -o sum.out
// 将链接文件链接成可执行文件 -
一步到位:
gcc sum.c -o sum.out
// 链接器->汇编器->编译器->预处理器,一层层往上调用最终找到源文件,中间过程不会省略,只是过程只产生临时文件不会保存下来。
2、gcc的一些参数
- I —>
gcc sum.c -I include -o sum.out
// -I参数表明头文件目录包含该目录 - D —>
gcc sum.c -D DEBUG -o sum.out
// -D参数表明编译时加宏定义 - O —>
gcc sum.c -O -o sum.out
// -O参数可用来优化代码,有O1\O2\O3 - Wall —>
gcc sum.c -Wall -o sum.ou
t // -Wall 参数提示警告 - g —>
gcc sum.c -g -o sum.out
// -g在程序中添加调试信息,生成的可执行文件会变大