gcc编译器编译过程

第一步:预处理阶段

终端编译代码: gcc -E demo1.c -o demo1.i   对demo1.c作预处理生成demo1.i

1)头文件展开

2)宏替换(傻瓜式替代)

傻瓜式替代例:

#include

#define Phi 3+3//宏

#define add(x) x+x//带参宏

int main(int argc,char ** argv){

       printf("%d\n",Phi*Phi);//3+3*3+3  傻瓜式替代

       printf("%d\n",add(3)*add(3));//3+3*3+3

       return0;

}

3)去注释

4)上标记(给每一行代码标记上行号)


第二步:编译阶段

终端编译代码:gcc -S demo1.i -o demo1.s

编译阶段,计算机会对需要编译的文件进行词法、语法、语义分析,并进行优化以及确保正确。当以上所有语法正确时,生成汇编文件。这个整个编译过程中最核心最重要的一步。


第三步:汇编阶段

终端编译代码:gcc -c demo1.s -o demo1.o

将每一条汇编语言,汇编成计算机能识别的计算机语言


第四步:   链接阶段

终端编译代码:gcc demon1.o -o demon1

将汇编文件链接动态库及静态库,生成可执行文件

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • GCC编译器 GCC是一个交叉平台的编译器,我想大家并不会觉得陌生。C/C++开发的时候很多时候都会用到GCC来进...
    故事狗阅读 9,221评论 0 25
  • GCC简介 1、GCC经过那么多年的发展,已经从最初的C编译器转变成了编译器的集合,官方定义是GNU Compli...
    Manfred_Zone阅读 6,310评论 1 21
  • 头上的一片天乌云密布,快下雨了吧!刚刚还是大晴天的,看了一下别人的朋友圈就变了?真的很糟糕。身边被负能量包围,...
    大鱼妈妈阅读 253评论 0 0
  • 我和南极有了关系,这么疯狂! 其实我在李笑来专栏《通往财富自由之路》时,就知道了左撇子谭杰(向左而生),很早就已经...
    娜哈啊哈阅读 546评论 12 6
  • 孩子前天晚上独自翻看《父与子》,专心的看了四五十分钟,从第1页到第178页。我看她看得这么认真,我也被吸引过去了。...
    花与熙阅读 562评论 2 3