GCC编译过程

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将各个目标文件组装在一起,解决符号依赖,库依赖关系,并生成可执行文件。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值