1、编译过程
通常说的编译指由源代码生成可执行文件的过程。C++程序的编译又可以分为几个子过程:
- 预处理(preprocessing):在编译前的对源代码进行文本上的预处理。输出.i文件。
- 编译(compilation):将源代码转化为汇编代码。输出.s文件。
- 汇编(assembly):将汇编代码转化为二进制文件。输出.o文件。
- 链接(link):把程序相关的二进制文件链接在一起组成可执行文件。输出可执行文件。
平时执行的编译命令:
g++ helloworld.cpp -o helloworld.out
默认执行的步骤是执行所有步骤,生成可执行文件,并删除中间文件。所以很少看到什么 .i, . s, .o文件。但是你可以使用参数指定执行到哪一步为止:
g++ -E test.cpp -o test.i //生成预处理后的.i文件
g++ -S test.i -o test.s //生成汇编.s文件
g++ -c test.s -o test.o //生成二进制.o文件
g++ test.o -o test.out //生成二进制.out可执行文件
编译和汇编不赘述,说一下预处理和链接。
2、预处理
预处理由预处理器执行,根据源代码的预处理指令对源程序进行编译前处理。
预处理指令在由#标识,#必须是该行的第一个非空字符。预处理指令不属于C/C++语句,所以不需要加分号。主要的预处理指令有#include</

本文详细介绍了C++程序的编译过程,包括预处理、编译、汇编和链接四个阶段。预处理涉及宏定义、头文件包含等文本替换操作;链接则负责将各个.o文件与库文件整合为可执行文件。通过预处理指令和链接选项,开发者可以控制编译过程和程序依赖。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



