文章目录

  • 一、编译过程简介
    • 1、预处理器
    • 2、编译器
    • 3、汇编器
  • 二、链接过程简介
    • 1、静态链接: 由链接器在链接时将库的内容直接加入到可执行程序中
    • 2、动态链接:

一、编译过程简介

    编译过程可以分为4部分内容组成预处理器->编译器->汇编器->链接器

1、预处理器

        (1)、处理所有的注释,以空格代替(2)、讲所有的#define删除,并且展开所有的宏定义(3)、处理条件编译指令#if,#ifdef、#elif,#else、#endif(4)、处理#include,展开文件包含(5)、保留编译器需要使用#pragma指令预处理指令示例:gcc -E file.c -o file.i

2、编译器

       (1)、对预处理文件进行语法分析、词法分析、语义分析语法分析:分析表达式是否遵循语法规则词法分析:分析关键字,标识符,立即数是否合法语义分析:在语法分析基础上进一步分析表达式是否合法(2)、分析结束后进行代码优化生成相应的汇编代码文件编译指令示例:gcc -S file.i -o file.s

3、汇编器

         (1)、汇编器将汇编代码转变为机器可以执行的指令,也就是机器指令(2)、每条汇编指令几乎都对应一条机器指令汇编指令示例:gcc - c file.s -o file.o

二、链接过程简介

    链接是指将目标文件最终生成可执行文件根据链接方式的不同,链接过程可以分为:1、静态链接:目标文件直接进入可执行文件2、动态链接:在程序启动后才动态加载目标文件链接器的意思:链接器的主要作用是把各个模块之间相互引用部分处理好,使得各个模块之间能够正确的链接

1、静态链接: 由链接器在链接时将库的内容直接加入到可执行程序中

2、动态链接:

          (1)、可执行程序在运行时才动态加载库进行连接(2)、库的内容不会进入可执行程序


引用文章:C语言编译和链接过程简介

C语言编译链接生成可执行文件四大步骤:预处理(-E)->编译(-S)->汇编(-c) ->链接相关推荐

  1. MATLAB中用Application Complier生成可执行文件的步骤及相关注意事项

    生成可独立执行的软件,可以分成以下5个主要的步骤: 1.打开Application Complier 2.添加主程序文件 3.可执行文件设置 4.选择打包方式 5.相关文件解释 大体步骤多类似,里面有 ...

  2. linux c语言编译成exe,C/C++程序从编译到最终生成可执行文件的过程分析

    C/C++程序编译步骤 如何生成可执行文件 电子计算机所使用的是由"0"和"1"组成的二进制数,二进制是计算机的语言的 基础.计算机发明之初,人们只能降贵纡尊, ...

  3. C/C++程序从编译到最终生成可执行文件的过程分析

    转载http://apps.hi.baidu.com/share/detail/32660500 C/C++程序编译步骤 如何生成可执行文件 ***************************** ...

  4. 使用 ld 命令链接目标文件生成可执行文件

    1.目标文件生链接成可执行文件依赖的库和目标文件 使用 ld 链接目标文件生成可执行文件,用于取代命令 g++,仅仅用于学习 ld 命令的使用,不用于实际的项目编译. 首先看一个简单的 C++ 源文件 ...

  5. C语言 目标文件和可执行文件(ELF文件)

    转自:https://www.jianshu.com/p/7c609b70acbd 1.C语言创建程序 1.1C语言创建(分为4个步骤) 编辑 编译 链接 执行 编辑:就是创建和修改C程序的源代码-我 ...

  6. 自己动手构造编译系统:编译、汇编与链接

    "自己动手系列" 自己动手构造编译系统 编译.汇编与链接 范志东  张琼声  著 图书在版编目(CIP)数据 自己动手构造编译系统:编译.汇编与链接 / 范志东,张琼声著. -北京 ...

  7. 这是预编译工具生成的文件_组件化架构 10.编译优化

    软件研发中,耗费最多时间的并不是编写代码,而是代码编译和代码不断调试的过程 软件试错时间 Android基础编译流程 编译构建的四个步骤: 代码编译:将源代码,R文件,AIDL生成的文件等 编译成.c ...

  8. Python 二维码的读取与生成:使用链接生成二维码、读取二维码里的链接

    Python 二维码的读取与生成演示 ① 使用链接生成二维码 ② 读取二维码里的链接 [ 文章推荐 ] Python 绘制中国地图:使用 pyecharts 最新版本绘制中国地图实例详解,个性化地图定 ...

  9. 汇编、链接、加载的原理

    本文为下面两本书的读书笔记. Assemblers And Loaders.pdf - Free download books Linkers and Loaders Mirror (wh0rd.or ...

最新文章

  1. JAVA 实现 快速排序算法
  2. 硅谷与人工智能的一段风流暧昧史
  3. 检查SELECTION-SCREEN 上面输入的参数是否合适
  4. 深度学习(32)随机梯度下降十: 手写数字识别问题(层)
  5. DevExpress控件之GridControl控件
  6. 【牛客 - 551G】CSL的训练计划(二分 + 拓扑排序 + 优化卡常)
  7. 阿里云使用笔记-Lrzsz上传下载文件-centos7
  8. 信息学奥赛一本通(1006:A+B问题)
  9. python 的列表遍历删除
  10. JavaScript常用设计模式
  11. Android开发学习笔记:圆角的Button
  12. HDOJ_2006_求奇数的乘积
  13. 上银驱动器使用手册_上银伺服电机调试说明书PPT课件
  14. 陶哲轩论文解析:从特征值到特征向量
  15. 常看:前端面试题搂搂
  16. bzoj3384[Usaco2004 Nov]Apple Catching 接苹果*bzoj1750[Usaco2005 qua]Apple Catching*
  17. android拦截所有短信源码,Android手机防短信电话骚扰宝典 手机也会思考
  18. 请让我像亲人一样爱你
  19. Containerd高级命令行工具nerdctl安装及使用
  20. 联想台式修复计算机,联想台式电脑如何一键恢复出厂设置

热门文章

  1. 【Python】Flask 框架安装虚拟环境报错—处理中......
  2. ALV标准过滤功能失效
  3. 如何获取尚未开票信息(包括交货单、销售订单)
  4. ABAP如何生成UUID
  5. ABAP知识:LIKE LINE OF 和LIKE TABLE OF
  6. SAP PP生产订单相关信息的获取
  7. 如何在TC里输出下拉列表
  8. 这届不敢看体检报告的年轻人还能“年轻”多久?
  9. 退市再上市,泡泡玛特的”盲盒泡泡”这次能吹多大?
  10. java 字符串驻留_java String 以及字符串直接量 与 字符串驻留池 ...