1.GCC的定义
GNU CC是GNU项目中ANSI C 标准的编译系统。可编译c,c++,java。gcc 是一个交叉平台编译器,他能够在当前cpu平台上为多种不同体系,结构的硬件平台开发软件
2.GCC的过程
源程序——预处理——编译——汇编——链接——可执行文件
1) 预处理:不做语法检查
命令行:gcc -E hello.c
由于预处理之后程序过多,一般将预处理之后的命令行放在hello.i中:gcc -E hello.c > hello.i
预处理所处理的文件:1.头文件加载
2.宏定义
3.条件编译
所谓条件编译就是:
#include<stdio.h>
#define max 100
int main()
{
int a[max];
#ifdef max;
printf(“hello \n”); //已经设置max的值,输出hello
#else
printf(“nihao\n”); //没有设置max,输出nihao
#endif
return 0;
}
2)编译 :进行语法检查,词法分析
命令行:gcc -c hello.c 生成hello.o
3)汇编:汇编器是将汇编代码转变成机器可以执行的命令,每一个汇编语句几乎都对应一条机器指令。
命令行:gcc -w hello.c //生产helllo.s,该文件为目标文件
4)链接
目标代码不能直接执行,要想将目标代码变成可执行程序,还需要进行链接操作,才会生成真正可以执行的可执行程序。链接操作最重要的步骤就是将函数库中相应的代码组合到目标文件中。链接器ld将各个目标文件组装在一起,解决符号依赖,库依赖关系,并生成可执行文件。