【Linux 05】gcc / g++ 编译器

🌈 Ⅰ 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生成文件时,尽量使用动态库
  • 73
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值