首页 > 其他分享 >编译器的工作一般分为哪几个阶段?

编译器的工作一般分为哪几个阶段?

时间:2023-08-09 18:34:29浏览次数:37  
标签:文件 gcc 汇编 编译 编译器 哪几个 阶段

gcc编译器对源文件文件的编译分为四个阶段:预处理编译汇编链接。

预处理(-e):在这个阶段主要做了三件事:展开头文件、宏替换、去掉注释行,这个阶段需要gcc调用预处理器来完成,最重得到的还是源文件,文本格式。

编译(-s):这个阶段需要gcc编译器调用编译器对文件进行编译,最终得到一个汇编文件。

汇编(-c):这个阶段需要gcc调用汇编器对文件进行汇编,最终得到一个二进制文件。

链接(-o):这个阶段需要gcc调用连接器对程序需要调用的库进行链接,最终得到一个可执行的二进制文件。

C语言源文件(预处理) ---------> 预处理后的文件(编译) --------------> 汇编文件(汇编) ----------->二进制目标文件(链接) --------->可执行程序。

标签:文件,gcc,汇编,编译,编译器,哪几个,阶段
From: https://www.cnblogs.com/py369/p/17617712.html

相关文章

  • 解决tsc编译器版本过低问题
    我们知道,tsc是TypeScript的编译器,可以将TypeScript脚本(.ts文件)编译为JavaScript脚本(.js文件)。根据约定,TypeScript脚本文件使用.ts后缀名,JavaScript脚本文件使用.js后缀名。tsc的作用就是把.ts脚本转变成.js脚本。1、......
  • Dockerfile 如何实现多阶段构建
    ❝我们在构建一些自定义镜像的时候,可能会需要引用别的镜像去做一些事情,但是跟最终结果又没太大的关系,这个时候大概率就要使用多阶段构建了!案例的情况一般不会那样使用,这里只是作为演示!❞编写Dockerfile我们新建一个名叫Dockerfile的文件,在编辑器里对他进行编辑!常用命令和关键字FRO......
  • 深度学习编译器前端技术概述
    AI编译器在前端经常会做一些静态分析,方便在前端做一些优化:自动微分等。中间表示(IntermediateRepresentation,IR)IR是编译器用于表示源代码的数据结构或代码,是程序编译过程中介于源语言和目标语言之间的程序表示。几乎所有的编译器都需要某种形式的中间表示,来对被分析、转换......
  • ITFriend创业阶段的服务器环境搭建手册
    创业阶段,进一步实践了Linux环境搭建和维护,下面是一些常用软件的搭建步骤和参考资料,仅供自己和诸位参考。我个人还是比较倾向“一站式Web开发”的,自己想做点事,需要太多的技能。非商业软件项目,自己全盘负责比较灵活和高效。1.mysql(关键是创建mysql用户,并用mysql用户执行安装程序) 参......
  • 第三阶段C++提高编程(黑马程序员)——Day10
    4STL-函数对象4.1函数对象4.1.1函数对象概念概念:重载函数调用操作符的类,其对象常称为函数对象函数对象使用重载的()时,行为类似函数调用,也叫仿函数本质:函数对象(仿函数)是一个类,不是一个函数4.1.2函数对象使用特点:函数对象在使用时,可以像普通函数那样调用,可以有参数,可以有返回值函数......
  • 软件开发全文档下载(几百份软件阶段各类文档)
    一、前言软件开发工作中,在#夏天生活图鉴#计划,需求分析,开发实施,测试,评审,交付验收,以及投标等其他过程中,会产生大量的文档,为了规范项目整个流程,亦或是为了验收交付提供材料,或者是为了资质评审,我们都需要这些文档来支撑,下面我把这些文档罗列出来给大家参考,里面有好多套不同项目的模板......
  • 定制ISO时在kickstart脚本的%post后处理阶段拷贝文件
    自己定制ISO使用ks.cfg实现自动安装时,可以在%post阶段执行添加文件、创建帐号、安全加固等操作,一般都会涉及从安装介质拷贝文件到目标系统,网上很多文章都是直接mount固定设备比如/dev/sr0,但实际安装过程中,ISO文件可能被刻录成光盘或U盘,另外UEFI和BIOS模式也有影响,因此无法提前知道......
  • 基础阶段python小总结暨下个阶段预习
    基础阶段基本与函数基本已经截至了,这些很简单,资料很多,当然我个人的更新的不是很全,只能做一个参考。下个阶段class预习简单做一个学生通信管理系统。任务说明:"学生信息管理系统v1.0""【1】、添加学生信息""【2】、删除学生信息""【3】、修改学生信息""【4......
  • 当编译器没有SetProcessDpiAwareness()这个函数时...
    #include<Shlobj.h>intsetdpi(){//定义一个函数指针类型typedefHRESULT(WINAPI*SetProcessDpiAwarenessFunc)(intvalue);//加载Shcore.dllHMODULEhModule=LoadLibrary("Shcore.dll");if(hModule==NULL){//加载失败......
  • 编译器、链接器和解释器
    编译器编译器的作用就是将高级编程语言翻译为机器代码。编译器工作过程一般分为:词法分析:将高级语言解析成Token集合;语法分析:将Token集合构建成语法树,在这个过程可以判断出语法是否有误,比如while后面是否{等等;语义分析:判断语法树是否有明显的语义错处,比如:string不能......