OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3813|回复: 0

C语言入门了解篇—C语言编译流程

[复制链接]

1152

主题

1164

帖子

2

精华

超级版主

Rank: 8Rank: 8

积分
4966
金钱
4966
注册时间
2019-5-8
在线时间
1259 小时
发表于 2022-1-21 18:04:51 | 显示全部楼层 |阅读模式
以下文章来源于:公众号:开源电子网,读取更多技术文章,请扫码关注



语言入门了解篇—C语言编译流程


      C语言入门了解篇-C语言编译流程

                                   (面试常见问题)


        当我们安装了集成环境之后,编写.c文件,一按下图红色框框的按键即“编译并运行”,就可以得到一个“.exe”后缀的可执行的C程序文件,这期间并非只有一道工序,而是分别经过了预处理、编译、汇编和链接四个流程。

       下图就是C程序的编译流程:

         

       以上过程就是可以囊括为:高级语言->汇编语言->机器语言(二进制)


         



     1.预处理


       由.c文件到.i文件,这个过程叫预处理。在源文件被编译前,首先要进行预处理的工作,也就是对源代码进行相对应的展开、替换和清理。

       ①在这个过程中,主要处理的事情:
       ②把代码注释部分去掉,不让其参与编译
       ③将所有的#define删除,并且展开所有的宏定义,简单来说就是字符替换
       ④处理所有的条件编译指令,例如#ifdef、#ifndef、#endif,简单来说就是带#的那些
       ⑤把“stdio.h”文件包含进来,即用“stdio.h”中的内容替换在“#include”位置


     2.编译


       由.i文件到.s文件,这个过程叫编译。编译的过程实质上是把高级语言翻译成机器语言的过程。简单来说,源文件被预处理之后,再以字符流的形式进行处理,进行词法和语法的分析,然后通过汇编器将源代码指令转变成汇编指令、生成相应的汇编文件。


     3.汇编

       由.s文件到.o文件,这个过程叫汇编。汇编是指把汇编语言代码翻译成目标机器指令的过程,也就是把汇编码转换成机器所能识别的二进制,通过把经过汇编之后生成的文件称为目标文件。


     4.链接

       由.o文件到可执行文件,这个过程叫链接。经过汇编之后生成的目标文件并不能立即被执行,还需要由链接器将代码在执行过程中用到的其他目标代码及库文件进行链接,最终生成一个可执行程序。

       假如.c文件中有用到printf函数,那么就需要找到包含该函数的标准库文件,对它进行链接。

       想不到IDE帮我们处理了这么多事情吧,作为工科男,我们也有必要了解这个编译流程,并且这个是面试常见的问题。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-20 13:36

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表