Linux:GCC基本介绍(06)

316 阅读2分钟

1.What(什么是GCC)

GCC(GNU Compiler Collection )是 Linux 下的编译工具集,包含 gcc、g++ 等编译器

2.Why(GCC的作用)

  • 编译和优化: GCC包含多种编译程序(支持多种语言的编译),且提供不同级别的优化(O1、O2和O3)
  • 代码诊断: 在编译过程中可检测并报告代码中的错误和警告信息,帮助开发者定位和修正问题。如使用 -Wall 选项可开启一系列常见警告,方便开发者发现潜在错误
  • 跨平台编译支持: 可以为不同的硬件平台和操作系统生成目标代码,包括常见的 x86、ARM、PowerPC 等架构,以及 Linux、Windows、macOS 等操作系统

3.How(如何使用GCC)

(1)GCC工作流程

示例源文件: image.png 预处理: 这一阶段的主要工作是:展开头文件、宏替换、去除注释行(.i,对应参数-E) image.png 编译和优化: GCC调用对应编译语言的编译程序进行编译,得到一个汇编文件(.s,对应参数-S) image.png 汇编: GCC调用相应的汇编器对汇编文件进行汇编,得到一个二进制文件(.o,对应参数-c) image.png 链接: GCC对程序需要调用的库进行链接,得到一个可执行的二进制文件(.out,不需要任何参数) image.png

(2)GCC参数介绍

参数含义
-E预处理指定的源文件,得到一个文本格式的文件.i
-S编译和优化展开后的源文件,得到一个汇编文件.s
-c汇编指定的汇编文件,生成一个二进制文件.o
-o指定输出文件的路径和名称
-I指定include包含目录的搜索路径
-L指定依赖库的路径
-l指定编译时使用的库
-g编译时生成调试信息,调试程序时必须添加该参数
-D程序编译时指定一个宏,常用于区分调试代码
-Wall编译时生成所有警告信息
-w不生成任务警告信息
-On指定编译时优化的级别,n的取值:0-3
-fPIC/ -fpic生成位置无关的目标文件,确保代码的可重定位性
-shared将位置无关的目标文件组合成一个动态链接库