C语言编译的各个过程

C语言的编译过程包括预处理、编译、汇编和链接四个阶段。预处理涉及头文件展开、宏替换等;编译阶段将C代码转化为汇编代码;汇编则生成目标代码;链接阶段,静态链接将库内容整合到可执行程序,而动态链接在运行时才建立函数调用的链接关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

C语言作为编译型语言,用来向计算机发出二进制指令。从代码到二进制指令转变的过程也就是C语言的编译过程,这个过程分为四个阶段。

在这里插入图片描述


翻译环境

翻译环境分为两大部分:编译和链接

编译

编译过程中又分为三部分:预处理、编译、汇编

预处理

预处理处理的是头文件的展开/宏替换/去掉注释/条件编译
在这里插入图片描述

编译

编译阶段是将C语言代码翻译成汇编代码,在这个过程中会进行词法分析、语法分析、语义分析、符号汇总。

汇编

汇编过程是将汇编代码转换成为目标代码(二进制文件)

链接

静态链接是由链接器在链接时将库的内容加入到可执行程序中的做法。链接器是一个独立程序,将一个或多个库或目标文件(先前由编译器或汇编器生成)链接到一块生成可执行程序。静态链接是指把要调用的函数或者过程链接到可执行文件中,成为可执行文件的一部分。
动态链接所调用的函数代码并没有被拷贝到应用程序的可执行文件中去,而是仅仅在其中加入了所调用函数的描述信息(往往是一些重定位信息)。仅当应用程序被装入内存开始运行时,在Windows的管理下,才在应用程序与相应的DLL之间建立链接关系。当要执行所调用DLL中的函数时,根据链接产生的重定位信息,Windows才转去执行DLL中相应的函数代码。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值