C/C++程序编译过程详解
C语言的编译链接过程要把我们编写的一个c程序(源代码)转换成可以在硬件上运行的程序(可执行代码),需要进行编译和链接。编译就是把文本形式源代码翻译为机器语言形式的目标文件的过程。链接是把目标文件、操作系统的启动代码和用到的库文件进行组织,形成最终生成可执行代码的过程。过程图解如下:
从图上可以看到,整个代码的编译过程分为编译和链接两个过程,编译对应图中的大括号括起的部分,其余则为链接过程。
- 编译过程
编译过程又可以分成两个阶段:编译和汇编。
一般情况下,我们只需要知道分成编译和链接两个阶段,编译阶段将源程序(*.c) 转换成为目标代码(一般是obj文件,至于具体过程就是上面说的那些阶段),链接阶段是把源程序转换成的目标代码(obj文件)与你程序里面调用的库函数对应的代码连接起来形成对应的可执行文件(exe文件)
编译预处理
- 宏定义指令,如# define Name TokenString,# undef等。
- 条件编译指令,如# ifdef,# ifndef,# else,# elif,# endif等。
- 头文件包含指令,如# include “FileName” 或者# include < FileName> 等。
- 特殊符号,预编译程序可以识别一些特