博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
代码编译过程
阅读量:4112 次
发布时间:2019-05-25

本文共 568 字,大约阅读时间需要 1 分钟。

这里写图片描述

从上大学开始学习编程至今,十年有余,这次头一回尝试总结一下平时最常见的工作的在计算机中的本质。

从源代码到可执行文件,正常需要经过“预处理器(Preprocessor)”->“编译器(Compiler)”->“链接器(Linker)”这三个过程。如果是嵌入式系统,还需要经过“加载器(Loader)”加载到目标机器的存储器中才能运行。

现在逐个解释每个过程的含义:

  • 预编译器(Preprocessor)
    不同的预处理器会包含不同的功能,以词法预处理器有例,它主要做宏替换、包含头文件(#include)以及条码编译等功能。也就是说,它的输入是源代码(.asm、.c、.cpp……),仅是在源代码的基础上进行宏替换、将#include的内容导入以及根据条件选择有效的编译内容,生成中间文件,输出给“编译器”。
  • 编译器(Compiler)
    编译器将预处理器的输出经过词法分析、语法分析、语义分析,最后生成等效的汇编代码(Assembly File),这一步及之前的代码都是可以阅读的文本。
  • 汇编器(Assembler)
    汇编器将汇编代码翻译成目标代码(Object File),这时已经是二进器的机器码。
  • 链接器(Linker)
    每一个源文件都会生成经过编译器都会生成相应的目标代码,链接器将所有的目标代码组装(链接)起来,生成可执行文件。
你可能感兴趣的文章
【原创】modelsim图像仿真笔记整理
查看>>
WEB网页插件 如何实现 选择上传图片路径 【高级问题】
查看>>
介绍 github
查看>>
【题解】Luogu P2766 最长不下降子序列问题
查看>>
Treap学习总结
查看>>
HTTP——学习笔记(1)
查看>>
在采用vue-cli Post Get
查看>>
git 提交oschina
查看>>
网络编程——TCP协议的三次握手和四次挥手
查看>>
制作根文件系统的经验
查看>>
最小二乘法(ZZ)
查看>>
爬虫-Beautiful Soup模块
查看>>
多路访问网络中的挑战
查看>>
etcd:从应用场景到实现原理的全方位解读
查看>>
mysql-mode问题
查看>>
Android service里面启动activity和alertdialog .
查看>>
PHPExcel读取excel文件示例
查看>>
常见浏览器的兼容问题
查看>>
iOS开发经验总结
查看>>
Java重定向标准输入/输出
查看>>