预处理、编译、连接、运行
2013-03-19 09:44
204 查看
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进行预处理、编译、连接、运行是做什么
- c进行预处理、编译、连接、运行是做什么
- 预处理、编译、连接、运行
- Linux预处理、编译、汇编、链接和运行的过程(包括一些基本的命令)
- vs2010实现编译连接运行
- centos7.2 编译 运行,连接不到动态库问题
- 19-20-预处理、编译、汇编、连接
- 程序的处理步骤——预处理、编译、链接、运行
- C++编程规范之14:宁要编译和连接时错误,也不要运行时错误
- 在编译时加入DLL而无需再运行时连接的方法
- cocos code IDE 自编译模拟器不能正确的运行以及断点调试连接IDE超时的解决方法
- window 下命令行编译连接运行
- Vim 一键编译、连接、运行 C/C++ 单文件(Windows 与 Linux通用)
- iOS_02_第一个C语言程序(理解编译、连接、运行)
- 预处理标识符,宏和函数区别,编译连接过程。
- VC连接ADO方式ACCESS数据库在WIN7下编译到XP下不能运行解决方法
- VC连接ADO方式数据库在WIN7下编译到XP下不能运行解决方法
- c程序的预处理,编译,连接过程。
- linux预处理、编译、汇编、链接和运行的过程