
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
随着互联网的不断发展,越来越多的人都在转行学习互联网软件开发等技术,而本文我们就通过案例分析来简单了解一下,C语言编译过程包含哪些步骤。
预处理(生成.i文件)
头文件展开:带#的语句,就是预处理指令,预处理指令在执行预处理的时候就会被处理。例如#include
宏替换:在代码中用#define定义了一个宏,预处理阶段就会将这个预处理指令处理掉,将代码中所有调用宏的地方进行替换。
删除注释:在写代码中通常都会写很多注释://(单行注释),/**/(多行注释),这些注释都不是计算机要执行的,所以在预处理阶段都会被处理掉,不会写入预处理文件。
条件编译:在if后面加上合适的条件才会编译if和endif之间的代码,不通过则不会将代码写入预处理文件,也不会进行编译。#if0->#endif(条件不成立,不会编译);#if1->#endif(条件成立,不编译)。
添加行号和文件标识,这样在调试和编译出错的时候会知道是哪个文件的哪一行。
在预处理阶段不会检查代码语法的错误。
编译(生成.s文件)
将预处理文件编译生成汇编文件(了解,不对汇编做介绍)。
在编译阶段会对代码进行词法分析,语法分析,语义分析,说白了就是对代码的语法、变量定义是否合理等检查语法错误。
汇编(生成.o文件)
将生成的汇编文件编译生成计算机认识的二进制文件.o
链接
设置运行的环境,堆栈等,将程序依赖的库链接到终的可执行文件当中。
举个例子:就像文件中使用了标准库中的函数"printf",但是编译过程只是把源文件翻译成二进制而已,这个二进制还不能直接执行,这个时候就需要做一个动作,将翻译成的二进制与需要用到库绑定在一块。打个比方编译的过程就向你对你老婆说,我要吃雪糕。你只是给你老婆发出了你要吃雪糕的诉求而已,但是雪糕还没有到。绑定就是说你要吃的雪糕你的老婆已经给你买了,你就非常happy。
结束
这就是C语言编译的整个流程:从高级语言-->汇编语言-->机器语言(机器只能识别二进制代码),从人能读懂看懂的代码编程计算机能识别运行的代码的过程。
gcc编译过程
gcc是C语言编译器,可以对文件进行分部编译,简单的看一下编译过程,更容易理解。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。