20170203C语言提升05_编译
2017-02-03 14:30
162 查看
1:编译概述:
编译的过程:1:编译器对代码的预处理:将空格,注释,条件编译指令,宏定义,#include等进行展开得到真实的代码。会生出 *.i 的文件。
2:编译过程:语句分析(词法,语法,语义),代码优化,生成汇编代码。
3:汇编器会讲所有的汇编代码生成机器码。
4:链接:如果使用了库就会有链接过程,分为静态连接和动态连接。
2:预处理器:
预处理的时候,编译器会分析里面的语句以及替换。经过与处理的时候会生成与处理文件(工程->属性->C/C++->预处理器->预处理到文件->设置为是)。设置后就可以生成与处理文件到文件里面。会生成 *.i 里面。这个文件会膨胀到很大(会把所有的库拷贝一份到文件)。3:编译器:
预处理之后,编译器会进行编译过程,他会对词法(命名是否合理等),语法(不符合语法规则就会报出语法错误),语义(编译器越来越强大,他会提示一些可能是错误的东西(比如if(num = 20))。)等进行一次检查。然后还会对代码进行优化。debug版本和release版本的优化。debug会生成比较容易调试的汇编语句。可能每一句C代码会生出多个汇编代码。而release版本可能会减省很多,体积很小,运行会更快。4:汇编器及连接器:
汇编器的作用就是 他会更具我们的汇编代码进行解释成机器码。相对来说更简单。链接:由链接器来完成,将外部的东西导入到当前的程序里面,导入完成后程序才可以运行。否则不可以运行。导入的方式分成两种:
1:静态链接:我们的程序已经生成了自己的代码,链接器将外不要用的代码也导入进来链接到一起,生成一个程序(特点:完整,大)。
2:动态链接:把导入的权限下放到操作系统,程序运行的时候操作系统随时给他导入需要的函数(特点:体积小,效率总会比静态链接低一点(有一个查找的过程))。
相关文章推荐
- 20170203C语言提升05_编译
- 20170203C语言提升05_编译
- 20170203C语言提升05_编译
- 20170203C语言提升05_编译
- 20170203C语言提升05_编译
- 20170203C语言提升05_编译
- 20170203C语言提升05_编译
- 20170203C语言提升05_编译
- 20170214C语言提升07_预编译指令
- 20170214C语言提升07_预编译指令
- 20170214C语言提升07_预编译指令
- 20170214C语言提升07_预编译指令
- 20170214C语言提升07_预编译指令
- 20170214C语言提升07_预编译指令
- 20170214C语言提升07_预编译指令
- 20170214C语言提升07_预编译指令
- 20170214C语言提升07_预编译指令
- 温编译之故 知C语言之新
- C语言编译过程
- C语言 条件编译详解