zoukankan      html  css  js  c++  java
  • c++一个源文件到可执行文件的过程

    参考学习链接

    https://blog.csdn.net/sheng_ai/article/details/47860403

    分为四个过程

    1.预处理(生成.i文件)

    2.编译(生成.s文件)

    3.汇编(生成.o或.obj文件)

    4.链接(生成.out或.exe文件,对应Linux和Windows吧)

    先说一下预处理阶段干的事情

    c++预处理器提供了预处理命令

    #define 宏定义

    #undef 取消宏定义

    #else #elif #endif #error

    #if, #ifdef.......

    这些命令在编译之前完成

    a.对所有的“#define”进行宏展开;
    b.处理所有的条件编译指令,比如“#if”,“#ifdef”,“#elif”,“#else”,“#endif”
    c.处理“#include”指令,这个过程是递归的,也就是说被包含的文件可能还包含其他文件
    d.删除所有的注释“//”和“/**/”
    e.添加行号和文件标识
    f.保留所有的“#pragma”编译器指令
        经过预处理后的.ii文件不包含任何宏定义,因为所有的宏已经被展开,并且包含的文件也已经被插入到.ii文件中。


    2.编译阶段

     编译的过程就是将预处理完的文件进行一系列词法分析,语法分析,语义分析及优化后生成相应的汇编代码文件(.s文件)

    3.汇编阶段

       汇编器是将汇编代码转变成机器可以执行的代码,每一个汇编语句几乎都对应一条机器指令。最终产生目标文件(.o或.obj文件)。

    4.链接阶段

    链接的过程主要包括了地址和空间分配(Address and Storage Allocation)、符号决议(Symbol Resolution)和重定位(Relocation)

  • 相关阅读:
    开源数据库
    深度学习TensorFlow笔记——学习率
    深度学习TensorFlow笔记——损失函数
    深度学习TensorFlow笔记
    Oracle常用内置函数
    Oracle数据库自带表或者视图
    Oracle数据库查询所有关键字
    IP代理网址
    时间、日历(time、calendar、datatime)
    selenium常用操作
  • 原文地址:https://www.cnblogs.com/mch5201314/p/11685960.html
Copyright © 2011-2022 走看看