c进行预处理、编译、连接、运行是做什么
2011-10-24 09:47
260 查看
1.预处理阶段:
编译器以C文件作为一个单元,首先读这个C文件,发现第一句与第二句是包含一个头文件,就会在所有搜索路径中寻找这两个文件,找到之后,就会将相应头文件中再去处理宏,变量,函数声明,嵌套的头文件包含等,检测依赖关系,进行宏替换,看是否有重复定义与声明的情况发生,最后将那些文件中所有的东东全部扫描进这个当前的C文件中,形成一个中间“C文件”
编译:
编译时是进行语法检查、函数分配空间,将各个函数编译成二进制码,按照特定目标文件格式生成目标文件
连接:
假如一个程序包含多个文件,在分别对每个源程序进行编译并得到多个目标程序后,要把这些目标程序连接起来,同时还要同系统提供的资源(如函数库)连接成为一个整体,如果不出现错误,会得到一个后缀为 .exe的可执行文件
运行:
运行时是执行连接好的程序(具体的没有找到相关资料) 将各个目标文件中的各段代码进行绝对地址定位,生成跟特定平台相关的可执行文件,当然,最后还可以用objcopy生成纯二进制码,也就是去掉了文件格式信息 (此下划线句摘自 http://zhidao.baidu.com/question/322035743.html)
一般说来编译器会做以下几个过程:
1.预处理阶段
2.词法与语法分析阶段
3.编译阶段,首先编译成纯汇编语句,再将之汇编成跟CPU相关的二进制码,生成各个目标文件
4.连接阶段。
编译器以C文件作为一个单元,首先读这个C文件,发现第一句与第二句是包含一个头文件,就会在所有搜索路径中寻找这两个文件,找到之后,就会将相应头文件中再去处理宏,变量,函数声明,嵌套的头文件包含等,检测依赖关系,进行宏替换,看是否有重复定义与声明的情况发生,最后将那些文件中所有的东东全部扫描进这个当前的C文件中,形成一个中间“C文件”
编译:
编译时是进行语法检查、函数分配空间,将各个函数编译成二进制码,按照特定目标文件格式生成目标文件
连接:
假如一个程序包含多个文件,在分别对每个源程序进行编译并得到多个目标程序后,要把这些目标程序连接起来,同时还要同系统提供的资源(如函数库)连接成为一个整体,如果不出现错误,会得到一个后缀为 .exe的可执行文件
运行:
运行时是执行连接好的程序(具体的没有找到相关资料) 将各个目标文件中的各段代码进行绝对地址定位,生成跟特定平台相关的可执行文件,当然,最后还可以用objcopy生成纯二进制码,也就是去掉了文件格式信息 (此下划线句摘自 http://zhidao.baidu.com/question/322035743.html)
一般说来编译器会做以下几个过程:
1.预处理阶段
2.词法与语法分析阶段
3.编译阶段,首先编译成纯汇编语句,再将之汇编成跟CPU相关的二进制码,生成各个目标文件
4.连接阶段。
相关文章推荐
- c进行预处理、编译、连接、运行是做什么
- c进行预处理、编译、连接、运行是做什么
- 预处理、编译、连接、运行
- 预处理、编译、连接、运行
- VC连接ADO方式ACCESS数据库在WIN7下编译到XP下不能运行
- gcc_预处理_编译_汇编_连接
- C++学习体会--预处理,编译过程,连接过程
- VS2008编译时总是出错,进行第二次编译时就没有问题了,不知道这是什么原因?
- 程序的处理步骤——预处理、编译、链接、运行
- vs2010实现编译连接运行
- 编译时和运行时的对象分别是什么
- 关于用命令行 文本 进行java代码的编辑 编译 运行 应注意的地方
- gVim/Vim 一键编译、连接、运行 C/C++ 单文件
- 如何在64位操作系统上使用masm进行编译链接和运行
- VC++ 6.0的使用——编译,连接,运行
- 程序运行过程中的编译与连接阶段
- 预处理--》编译--》运行的区别
- 在编译时加入DLL而无需再运行时连接的方法
- 19-20-预处理、编译、汇编、连接
- Linux预处理、编译、汇编、链接和运行的过程(包括一些基本的命令)