🌈 Ⅰ gcc / g++ 介绍
.
1. 什么是 gcc / g++
- gcc:专门用来编译 C 语言代码的编译软件。
- g++:可用来编译 C / C++ 代码的编译软件。
2. gcc / g++ 指令格式
- gcc / g++ [选项] 要编译的文件 [选项] [目标文件]
3. gcc / g++ 使用实例
- g++ test.cpp -o test.exe,利用 g++ 编译一个已经准备好的 test.cpp 文件然后利用 -o 选项指定编译后生成的可执行程序为 test.exe (可不带后缀)。
- 使用 ./test.exe,调用之前编译生成的可执行程序 test。
🌈 Ⅱ gcc / g++ 实现程序翻译的过程
- 当前有一个如下图所示的 .cpp 文件,之后演示的各个过程都以该段程序为基础。
1. 预处理
功能:该阶段的功能主要包括宏替换,去注释,头文件展开,条件编译。
选项:-E,让程序的翻译过程在预处理结束后就停止。
示例
- g++ -E .test.cpp -o test.i
- .i 文件是已经经过预处理阶段的原始程序,该文件是个临时文件。
- 该文件去掉了注释,展开了包含的头文件 (iostream) 的内容 。
2. 编译
功能:将预处理后的代码变成汇编语言,该阶段伴随着语法检查。
选项:-S,将 C / C++ 代码翻译成汇编代码就停止,不进行后面的汇编和链接。
示例
- g++ -S test.i -o test.s
- .s 文件是用 .i 文件编译后形成的临时编译文件,里面装着对源程序的汇编代码。
3. 汇编
功能:将汇编代码翻译成二进制目标文件。
选项:-c,在执行完汇编阶段生成了二进制文件之后就停止编译过程。
示例
- g++ -c test.s -o test.o
- .o 后缀的文件就是对应的二进制文件,普通方式没法阅读二进制文件。
4. 链接
功能:将 C / C++ 的标准库文件和二进制目标文件链接,形成可执行程序。
示例:g++ test.o -o test.exe,直接形成指定的可执行程序文件 test.exe。
🌈 Ⅲ gcc / g++ 常见选项
选项 | 说明 |
---|---|
-E | 完成 预处理 阶段时,就停止对程序的翻译 |
-S | 完成 编译 阶段时,就停止对程序的翻译 |
-c | 完成 汇编 阶段时,就停止对程序的翻译 |
-o | 指定生成的目标文件名 |
-static | 对生成的文件采用静态链接 |
-g | 生成调试信息 |
-shared | 生成文件时,尽量使用动态库 |