C/C++程序编译过程详解

Posted Overboom

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C/C++程序编译过程详解相关的知识,希望对你有一定的参考价值。

C语言的编译链接过程要把我们编写的一个c程序(源代码)转换成可以在硬件上运行的程序(可执行代码),需要进行编译和链接。编译就是把文本形式源代码翻译为机器语言形式的目标文件的过程。链接是把目标文件、操作系统的启动代码和用到的库文件进行组织,形成最终生成可执行代码的过程。过程图解如下:

从图上可以看到,整个代码的编译过程分为编译和链接两个过程,编译对应图中的大括号括起的部分,其余则为链接过程。

1. 编译过程

编译过程又可以分成两个阶段:编译和汇编。

1.1 编译

编译是读取源程序(字符流),对之进行词法和语法的分析,将高级语言指令转换为功能等效的汇编代码,源文件的编译过程包含两个主要阶段:

1.1.1编译预处理

读取c源程序,对其中的伪指令(以# 开头的指令)和特殊符号进行处理。

伪指令主要包括以下四个方面:

  1. 宏定义指令,如# define Name TokenString,# undef等。
    对于前一个伪指令,预编译所要做的是将程序中的所有Name用TokenString替换&

以上是关于C/C++程序编译过程详解的主要内容,如果未能解决你的问题,请参考以下文章

C/C++编译链接过程详解

c 编译和链接过程

JAVA运行机制详解 | JVM规格描述

c/c++中extern关键字详解

C/C++程序的编译链接过程

C/C++程序编译运行过程