一、编译流程
一个C程序从源代码到可执行程序一共有四个过程:预处理
->编译
->汇编
->链接
次序 | 执行流程 | 功能 | GCC命令 |
---|---|---|---|
1 | 预处理 | 展开头文件、宏替换、去掉注释、条件编译 | gcc - E main.c - o main.i |
2 | 编译 | 检查语法,生成汇编程序 | gcc - S main.i - o main.s |
3 | 汇编 | 汇编代码转换为机器码 | gcc - c hello.s - o main.o |
4 | 链接 | 链接各个文件一起生成可执行文件 | gcc main.o - o main |
1. 预处理
预处理就是在C语言源文件和头文件中的所有以#
开始的行,都属于预处理的范畴,预处理命令一般有一下几种:
类别 | 符号 | 主要作用 |
---|---|---|
宏定义 | #define ,#undef ,#include |
基本上即使做字符替换 |
条件编译 | #if ,#else ,#elif ,#endif ,#ifdef ,#ifndef |
和C语言的分支语句一样,不过这个告知编译器的 |
信息输出 | #error ,#warning |
分别输出错误级别信息和警告级别信息 |
设置 | #line ,#pragma |
向编译器发送一些指令 |
二、命令选项
o
小写
指定生成(输出)文件名称,如: gcc -o helloworld helloworld.c
.
O
大写
编译器的优化选项,格式为-On
(n=0,1,2,3),默认为1
,0表示不优化,3表示最