![Linux系统安全基础:二进制代码安全性分析基础与实践](https://wfqqreader-1252317822.image.myqcloud.com/cover/941/47793941/b_47793941.jpg)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
2.1 二进制代码的生成过程
从源代码(如C或C++语言程序)生成二进制可执行文件的过程叫做编译过程。编译过程由编译器完成,这里以gcc(The GNU Compiler Collection, GNU编译器套装)为例进行说明。整个编译过程分为四个阶段:预编译阶段(也叫做编译预处理阶段)、编译阶段、汇编阶段以及链接阶段,如图2.1所示。
![](https://epubservercos.yuewen.com/EE7094/27210500707662806/epubprivate/OEBPS/Images/45970_15_1.jpg?sign=1738860180-cG4Wuu5xqPUwJSf9NvGo6XAIHtv8XvHe-0-3215135f4d4eb996f24ec7459f6475e7)
图2.1 从源代码到可执行文件的编译过程
注意,这里的编译过程和编译阶段是两个不同的事情。实际上,现代编译器通常会合并其中的一些或全部阶段。
下面以图2.1中的程序Prog.c生成可执行文件Prog的过程为例进行说明。在默认情况下,执行命令“gcc Prog.c-o Prog”后,gcc可自动执行编译过程的所有阶段,生成可执行文件Prog。如果要单独执行某个阶段,必须显式地为gcc指定相关选项。