编译步骤
1.预处理:宏定义的展开、头文件展开、条件编译等、同时将代码中的注释删除,预处理阶段不进行语法检查
2.编译:编译阶段进行语法的检查,将预处理后的文件编译称汇编文件
3.汇编:将汇编文件生成二进制文件(目标文件)
4.链接:C语言写的程序是需要依赖各种库,所以之后还需要把库链接到最终的可执行程序中去
编译过程
步骤 | 方法 |
---|---|
预处理 | gcc -E test.c -o hello.i |
编译 | gcc -S test.i -o test.s |
汇编 | gcc -c test.s -o test.o |
链接 | gcc test.o -o test |
选项 | 含义 |
---|---|
-E | 只进行预处理操做 |
-S | 只进行预处理和汇编操做 |
-c | 只进行预处理、编译、汇编操做 |
-o | 指定生成文件 |
文件后缀 | 含意 |
---|---|
.c | C语言文件 |
.i | 预处理后的C语言文件 |
.s | 编译后的汇编文件 |
.o | 编译后的目标文件 |
上述是分步编译,也可一步编译
gcc test.c -o test