首页 > 其他分享 >源文件到可执行文件的过程

源文件到可执行文件的过程

时间:2024-02-20 18:01:34浏览次数:24  
标签:可执行文件 文件 源文件 编译器 源代码 过程 链接

从用户编写的源文件到生成可执行程序,需要经过以下四个中间过程:

  1. 预处理:预处理过程主要处理源代码文件中的#include、#define、#if、#else、#ifdef、#endif等指令,以及处理注释、行号(用于调试)等工作。
  2. 编译:编译是构建可执行程序过程中最重要的步骤,涉及词法分析、语法分析、语义分析、源代码优化、代码生成和目标代码优化等。
  3. 汇编:汇编过程将编译生成的汇编代码转换为机器指令。
  4. 链接:链接过程将各个目标文件(包括汇编生成的目标文件和库文件)组合成一个可执行程序。
    从源文件到可执行文件的过程:第一步:转换源代码:编译器编译器:将编程语言编写的源代码转换为本地代码的程序。编译完成的程序为.obj目标文件,内容是本地代码。但是还不能够运行。转换每种高级编程语言都需要其专有的编译器,例如C语言的C编译器。同种编程语言在不同CPU下的编译器也不同。编译器也是程序,因此也需要适合它的运行环境。因此,确定一个编译器的种类,需要确定哪种编程语言+哪种CPU+哪种运行环境。而实际上购买和下载时,通常指需要确定编译器产品名称+版本号即可。第二步:生成.EXE文件与启动:链接器经过编译器的编译,源文件已经被转换成了.obj目标文件。链接:将多个目标文件结合起来,生成一个.EXE可执行文件。链接器:运行链接的程序。库文件,即.lib文件,是指将多个目标文件集成保存在一个文件里的形式。标准函数:在库文件中收录的函数。在程序中,不通过源代码另行编写,而通过库文件提供的函数。如果主程序中使用了标准函数,在运行链接程序时,链接器就需要指定收录它的库文件,将库文件中需要的.obj目标文件(包含此标准函数)抽取出来,与其他目标文件共同生成一个.EXE可执行文件。在链接时,必须链接一个特殊的目标文件,它记述了同所有程序起始位置相结合的处理内容,成为程序的启动。

标签:可执行文件,文件,源文件,编译器,源代码,过程,链接
From: https://www.cnblogs.com/zhwzs/p/18023710

相关文章

  • 源程序的运行过程
    源程序的运行过程主要包括预处理、编译、汇编和链接四个步骤。具体如下:预处理:预处理器对源代码进行处理,包括展开头文件、宏定义替换等,生成中间代码文件(通常是以.i为扩展名的文件)。编译:编译器将预处理后的中间代码翻译成汇编代码。这一步骤涉及到语法分析、语义分析以及优化等过......
  • NFA到DFA的转换过程
    目录1.ε-NFA到NFA的转换2.NFA到DFA的转换子集构造法步骤:注意事项:总结从非确定有限自动机(NFA)到确定有限自动机(DFA)的转换过程是一个重要的计算理论概念。这个过程主要包括两个主要步骤:首先是将ε-NFA(带有ε-转换的NFA)转化为NFA,然后是将NFA确定化为DFA。下面详细介绍这两个步骤:......
  • IDEA使用过程中src文件夹显示不出来的解决方法
    IDEA加载项目没有src目录_idea导入项目没有src-CSDN博客总结:删除本地项目目录中的idea文件夹后重新打开项目......
  • Oracle递归授权view底层依赖表查询权限存储过程
    createorreplaceproceduresys.grant_view_base_table_access(p_accessownerVARCHAR2,p_vownerVARCHAR2,p_vnameVARCHAR2)--RETURNnumberasv_accessownerVARCHAR2(200):=trim(upper(p_accessowner));v_ownerVARCHAR2(200):=trim(upper(p_vowner));v_nameVARCHAR......
  • 第八章——从源文件到可执行文件
    本章讲解的是源文件如何通过编译转换为可执行文件的。首先计算机只能运行本地代码。用某种编程语言编写的程序就称为源代码,保存源代码的文件被称为源文件。源代码是无法直接运行的,因为CPU能直接解析和运行的不是源代码而是本地代码。本地代码的内容就是各种数值的罗列。编译器负......
  • Oceanbase3.2.4ForOracle_Docker搭建过程
    Oceanbase3.2.4ForOracle_Docker搭建过程背景快速搭建测试环境。docker的方式较为简单。并且便于进行相关的测试和维护工作。还总结了部分参数设置执行数据库创建注意事项:创建目录:mkdir-p/home/admin/oceanbase/mkdir-p/home/admin/logs/obproxymkdir-p/home......
  • Jupyter Notebook运行R程序安装过程释疑
    JupyterNotebook是一个开源的交互式笔记本环境,支持多种编程语言,包括Python和R。它被广泛应用于数据分析、机器学习、科学计算等领域。在JupyterNotebook中,用户可以结合编写文本、代码和可视化结果,以便于进行数据探索、模型开发以及结果展示。然而,随着项目的进展,往往需要对......
  • java的getResource方法 总结一下 在Java中获取资源的时候,经常用到getResource和getRes
    java的getResource方法总结一下在Java中获取资源的时候,经常用到getResource和getResourceAsStream,本文总结一下这两种获取资源文件的路径差异1.前言在Java中获取资源的时候,经常用到getResource和getResourceAsStream,本文总结一下这两种获取资源文件的路径差异。2.Class.get......
  • 第八章:从源文件到可执行文件
    在《程序是怎样跑起来》的第八章中,作者详细介绍了程序从源文件到可执行文件的整个过程。这一章节通常涉及到编译原理和链接技术,对于理解程序的生命周期和执行过程至关重要。以下是我对这一章节的读后感:首先,本章可能从源代码的编写开始,介绍了编程语言的基本概念。源代码是人类可读......
  • MySQL学习之存储过程
    存储过程-介绍介绍存储过程是事先经过编译并存储在数据库中的一段SQL语句的集合,调用存储过程可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的。存储过程思想上很简单,就是数据库SQL语言层面的代码封装与重用。特点......