Gcc Build Process(以gcc为例,介绍编译器的执行过程)

 

构建(build):编译和链接合并到一起的过程。


Build's process:


Prepressing(预处理)


order:$gcc -E xxx.c –o xxx.i


($cpp xxx.c > xxx.i)


function:deletedeal add keep


注释:


delete:将所有的“#define”删除,并且展开所有的宏定义。


删除所有的注释。


deal:处理所有条件预编译指令,forexample#if#ifdef


处理“#include”预编译指令,将被包含的指令插入到该与编译指令的位置。注意:这


个过程是递归进行的,文件可能还包含其他文件。


add:添加行号和文件名标识,forexample#2“hello.c”2以便于编译器产生调试用的


行号信息及用于编译时产生编译错误或者警告时能够显示行号。


keep:保留所有的#pragma编译器指令,因为编译器需要使用他们。


Compilation(编译)


order:$gcc -S xxx.i –o xxx.s

($gcc -S xxx.c –o xxx.s)


function:morphologygrammar semantic optimizer


注释:编译过程就是把预处理完的文件进行一系列的词法分析,语法分析,语义分析以


及优化后生成相应的汇编代码文件。


Assembly(汇编)


order:$asxxx.s –o xxx.o

($gcc -c xxx.s –o xxx.o)


function:assemblycode change into computer instruct


注释:汇编器就是将汇编代码转变成机器可以执行的指令,每个汇编语句几乎都对应一


条机器指令。


Linking(链接)


order:$ld-static xxx.o….yyy.o

function:makevarious .o file link a .out


注释:链接就是将一大堆文件链接起来,最终的到可执行文件。



注释:


cc1:与编译编译程序


as:汇编器


ld:连接器



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值