代码编译过程
来源:互联网 发布:mac samba server 编辑:程序博客网 时间:2024/06/05 03:33
从上大学开始学习编程至今,十年有余,这次头一回尝试总结一下平时最常见的工作的在计算机中的本质。
从源代码到可执行文件,正常需要经过“预处理器(Preprocessor)”->“编译器(Compiler)”->“链接器(Linker)”这三个过程。如果是嵌入式系统,还需要经过“加载器(Loader)”加载到目标机器的存储器中才能运行。
现在逐个解释每个过程的含义:
- 预编译器(Preprocessor)
不同的预处理器会包含不同的功能,以词法预处理器有例,它主要做宏替换、包含头文件(#include)以及条码编译等功能。也就是说,它的输入是源代码(.asm、.c、.cpp……),仅是在源代码的基础上进行宏替换、将#include的内容导入以及根据条件选择有效的编译内容,生成中间文件,输出给“编译器”。 - 编译器(Compiler)
编译器将预处理器的输出经过词法分析、语法分析、语义分析,最后生成等效的汇编代码(Assembly File),这一步及之前的代码都是可以阅读的文本。 - 汇编器(Assembler)
汇编器将汇编代码翻译成目标代码(Object File),这时已经是二进器的机器码。 - 链接器(Linker)
每一个源文件都会生成经过编译器都会生成相应的目标代码,链接器将所有的目标代码组装(链接)起来,生成可执行文件。
0 0
- C#代码编译过程
- c代码编译过程
- c++代码编译过程
- c#代码编译过程
- 代码编译过程
- 代码编译过程
- 代码编译过程
- C#代码的编译过程
- C代码编译过程分析
- Java代码编译过程简述
- java代码编译、执行过程
- C语言代码的整个编译过程
- u-boot 代码下载编译过程
- 模板的代码组织和编译过程
- webrtc android代码编译过程小结
- 代码的编译连接与执行过程
- java代码的编译和执行过程
- 编译 unity3d 的示例代码过程
- Android开发之MdiaPlayer详解
- CString转char * ,string |wchar_t*和char*之间互相转换
- 黑马程序员-OC语言之多态
- node.js自学笔记(3)-异步I/O
- 开始使用Mac OS X
- 代码编译过程
- 027 命令行变元
- 设计模式1----Singleton(单态)
- OC SEL (@selector) 原理及使用总结
- Event Logging 技术简介
- (大型网站之Nginx)图解正向代理、反向代理、透明代理
- 善良比聪明更难
- 使用定时器显示下拉菜单
- Linux下的Root密码忘记破解方法