GCC编译一共有4个阶段:预处理、编译、汇编、链接。
1.预处理-Pre-Processing。
// -E 选项指示编译器仅对输入文件进行预处理
// 对源代码文件头部、预编译语句进行分析,完成宏的替换和注释的消除。
g++ -E test.cpp -o test.i
//输入为学好的 .cpp 文件,输出后缀为 .i 的文件
2.编译-Compiling。
// -S 选项告诉 g++ 在为 c++ 代码产生了汇编语言文件后停止编译
// 检查代码的规范性、是否有语法错误等,确认无误后,产生相应的汇编语言文件
g++ -S test.i -o test.s
//输入为上一步产生的 .i 文件,输出后缀为 .s 的文件
3.汇编-Assembling。
// -c 选项告诉 g++ 仅把源代码编译为机器语言的目标代码
// 将汇编语言文件翻译成机器所需要的二进制文件
g++ -c test.s -o test.o
//输入为上一步产生的 .s 文件,输出后缀为 .o 的文件
4.链接-Linking。
// -o 编译选项来为将产生的可执行文件用制定的文件名
// 将汇编得到的二进制文件和系统其他组件(比如标准库、动态链接库等)结合起来
g++ test.o -o test
//最终的test为可执行文件
以上的步骤执行完之后,可以依次vim预览一下其中的内容,会对整个编译过程有更深入的了解。
实际工作中很少做的那么复杂,都是直接一条命令搞定:
g++ test.cpp -o test
参考链接:https://www.bilibili.com/video/BV1fy4y1b7TC