LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2078|回复: 5

gcc的编译过程

[复制链接]
发表于 2003-5-20 12:52:59 | 显示全部楼层 |阅读模式
那位大虾给能俺讲解下gcc编译的全过程啊
什么什么 予处理 编译 汇编 联接 都是怎么回事啊?
    极度求知啊 ~~~~~  多谢
发表于 2003-5-20 13:23:22 | 显示全部楼层
我给你转到编程版,问问无双大哥
发表于 2003-5-20 18:39:49 | 显示全部楼层
预处理就是把.c文件处理成一种中间语言
这种中间语言是编译器用的,每个编译器都不同

然后编译器对预处理结果进行分析,检查语法及符号间关系

检查完成后根据预处理结果生成汇编文件
然后编译汇编文件成可执行文件

我不知我说的对不对
你可以上google查找一下相关资料
发表于 2003-5-20 19:54:27 | 显示全部楼层

说一点。

用gcc命令来生成可执行文件看起来好像是一步完成的,但实际上gcc命令仅是个驱动者,它必须调用其他工具来完成任务。生成可执行文件一般可分为以下四个步骤:

预自理(preprocessing):分析各个宏命令,如#define,#include等。gcc是调用预处理程序cpp来实现这项工作的。

编译(complilation): 根据输入文件而产生汇编程序,一般由于直接调用汇编器而不会产生汇编程序文件。这一步是由编译器ccl进行的。

汇编(assembly):将汇编程序输出成为一个具有.o后缀的目标文件。这一步骤是由汇编器gas来完成的。

链接(linking):将各目标文件链接在可执行文件中,所以引用的静态链接库也链接在一起。gcc调用链接器gld来完成这一步骤。

程序从源代码生成可执行文件,就是经历这几个步骤,是通用的,而不是只局限于gcc。
 楼主| 发表于 2003-5-21 13:32:46 | 显示全部楼层
通俗易懂
  多谢2位了
 楼主| 发表于 2003-5-21 13:37:33 | 显示全部楼层
还要谢谢doooom斑竹的指引
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表