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

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

时间:2024-02-27 17:47:04浏览次数:20  
标签:可执行文件 汇编 文件 预处理 源文件 过程 链接

从源文件到可执行文件的整个过程涉及到多个步骤,具体包括:

预处理:这个阶段通过预处理命令对源代码进行处理,如删除“#define”宏定义,展开条件编译指令,以及处理包含文件等。预处理的结果通常保存在名为 .i 的文件中,这里的 "i" 是 "intermediate" 的缩写,表示这是一个中间文件。
编译:预处理完成后,会生成一个名为 .i 的中间文件。接下来,编译器会根据这个文件的内容,将其转换成汇编代码。生成的汇编文件通常以 "s" 作为扩展名。12
汇编:汇编器接收到编译器生成的汇编代码,并将这些代码翻译成机器指令。在这个过程中,汇编器还会对代码进行一些优化操作,以便后续的处理。

链接:链接器负责将所有需要的目标文件(在这里是指已经汇编好的 o 文件)组合成一个完整的可执行文件。链接器还会处理符号表,确保在整个程序中正确的符号被链接到正确的地址。

生成可执行文件:经过上述步骤之后,链接器成功地创建了最终的、可以直接执行的可执行文件,通常具有 ".exe" 或 ".so" 等扩展名。

综上所述,从源文件到可执行文件的过程中涉及到的步骤有预处理、编译、汇编和链接,而最终生成的可执行文件包含了这些步骤的结果。

标签:可执行文件,汇编,文件,预处理,源文件,过程,链接
From: https://www.cnblogs.com/Yyzc/p/18037375

相关文章

  • Java基础-面向过程和面向对象
    面向过程和面向对象都是对软件分析、设计和开发地一种思想,它指导着人们以不同的方式去分析、设计和开发软件。这两种思想是相辅相成的。面向过程:使用面向过程思想思考问题时,我们首先思考“怎么按步骤实现?”并将步骤对应成方法,一步一步,最终完成。这个思想适合简单任务,不需要过多......
  • Kylin-Server-V10-SP3物理机安装简要过程
    1.下载镜像链接:https://eco.kylinos.cn/partners/mirror.html?class_id=1&query_key=V10选择:银河麒麟高级服务器操作系统V10(海光版)对应的是版本是KylinLinuxAdvancedServerV10(Lance)下载:Kylin-Server-V10-SP3-General-Release-2303-X86_64.iso2.UltraISO软盘通......
  • 第8章 从源文件到可执行文件
    源代码完成后就可以编译生成可执行文件了,负责实现该功能的是编译器。计算机只能运行本地代码,Windows中exe文件的程序内容使用的就是本地代码。能够把c语言的高级编程语言编写的源代码转换成本地代码的程序称为编译器,编译器负责转换源代码。编译器本身也是程序的一种,也需要运行环......
  • 从源文件到可执行文件
    用某种编程语言编写的程序就称为源代码,保存源代码的文件称为源文件。因为源文件是简单的文本文件,所以用Windows自带的记事本等文本编辑器就可以编写。CPU能直接解析并运行的不是源代码而是本地代码的程序。对CPU来说,母语就是机器语言,而转换成机器语言的程序就是本地代码。用......
  • makefile 实例: 编译libxyz.so 和 abc可执行文件。
    .PHONY:cleanallalldepall:alldepOBJDIR=Object###libxyx.so###TARGET_LIB_XYZ=libxyz.soTARGET_LIB_XYZ_OUTPUT=$(OBJDIR)/$(TARGET_LIB_XYZ)LDFLAGS+=-ltelux_wlan-lnl-3-lnl-genl-3LDFLAGS+=-L$(SDKTARGETSYSROOT)/lib-L.-rdynamicCFLAGS+=-I$(S......
  • 【进阶篇】使用 Redis 实现分布式缓存的全过程思考(一)
    目录前言一、关于缓存二、基本数据结构三、缓存注解3.1自定义注解3.2定义切点(拦截器)3.3AOP实现3.4使用示例四、数据一致性4.1缓存更新策略4.2缓存读写过程五、高可用5.1缓存穿透5.2缓存击穿5.3缓存雪崩5.4Redis集群六、文章小结前言写在前面,让我们从3个问题开始今天的文章:......
  • 微服务架构项目开发过程中,如何让服务调用自己的服务
    背景在微服务架构项目开发过程中,经常需要调试代码,由于开发人员较多,某个服务会启动多个节点,经常出现调试的时候,程序逻辑走到别人的服务中,影响问题定位,(甚至有时候,其它同事的服务调不通,影响开发)解决方案可以通过配置feignclient指定自己的IP,如下示例:@FeignClient(value="服务......
  • 《程序是怎样跑起来的》第八章——从源文件到可执行文件
    编译(Compilation):首先,程序员使用文本编辑器编写源代码,然后通过编译器将源代码转换为目标代码。编译器会进行词法分析、语法分析、优化和代码生成等步骤,最终生成可执行文件或库文件。链接(Linking):如果程序包含多个源文件或库文件,链接器会将这些文件中的目标代码连接在一起,形成最......
  • 热补丁(Hot Patching)是指在程序运行过程中,无需停止或重启程序,直接对其进行修补或更新的
    热补丁(HotPatching)的起源可以追溯到早期操作系统和服务器软件的开发。由于这些软件需要在长时间运行过程中保持稳定和可靠,因此需要不停地修复和更新软件中的漏洞和错误。传统的修补方法通常需要重新编译程序、重新部署或重启服务器等,这会导致服务中断和停机时间增加,影响用户体验......
  • LightDB-X 24.1 支持 Oracle DBMS_STATS.GATHER_TABLE_STATS 存储过程
    LightDB-X24.1支持OracleDBMS_STATS.GATHER_TABLE_STATS存储过程背景LightDB-X一直在不断提升对Oralce的兼容性,降低基于Oracle的业务系统迁移到LightDB-X的门槛。在24.1版本中支持了Oracle的DBMS_STATS.GATHER_TABLE_STATS存储过程,提高了对Oracle管理功能......