### GCC指南知识点详解 #### 一、编译C、C++、Objective-C或Fortran程序 GCC(GNU Compiler Collection)不仅支持C语言的编译,同时也支持C++、Objective-C及Fortran等语言的编译。这意味着用户可以根据不同的需求选择合适的语言进行编程,并通过GCC进行编译。 1. **C语言**: 作为一种通用且结构化的编程语言,C语言在嵌入式系统、操作系统开发等领域应用广泛。 2. **C++语言**: C++作为C语言的扩展,增加了面向对象编程的支持,适合于开发复杂的应用程序和游戏引擎。 3. **Objective-C语言**: 主要用于苹果公司的Mac OS X和iOS操作系统的开发。 4. **Fortran语言**: 在科学计算领域有着悠久的历史,主要用于数值计算和科学工程计算。 #### 二、GCC命令选项详解 GCC提供了丰富的命令行选项来控制编译过程中的各种细节。 1. **选项概览**: - **-E**: 预处理阶段后停止。 - **-S**: 编译阶段后停止。 - **-c**: 编译和汇编阶段后停止。 - **-o <file>**: 指定输出文件名。 - **-g**: 包含调试信息。 2. **控制输出类型**: - **-S**: 仅预处理和编译,输出汇编代码。 - **-E**: 仅预处理。 3. **编译C++程序**: - **-std=c++11**: 使用C++11标准。 - **-std=c++14**: 使用C++14标准。 - **-std=c++17**: 使用C++17标准。 4. **控制C语言方言**: - **-ansi**: 采用ANSI C标准。 - **-std=c89**: 采用C89标准。 - **-std=gnu89**: GNU C89标准,包含一些GNU扩展。 5. **控制C++语言方言**: - **-std=c++98**: 采用C++98标准。 - **-std=c++03**: 采用C++03标准。 - **-std=c++11**: 采用C++11标准。 - **-std=c++14**: 采用C++14标准。 - **-std=c++17**: 采用C++17标准。 6. **请求或抑制警告**: - **-Wall**: 开启所有警告。 - **-Werror**: 将所有警告视为错误。 - **-Wno-<warning-option>**: 抑制特定类型的警告。 7. **调试程序或GCC本身**: - **-g**: 生成调试信息。 - **-fno-omit-frame-pointer**: 不省略帧指针,便于调试。 8. **优化控制**: - **-O**: 开启优化。 - **-O2**: 开启更多优化。 - **-O3**: 开启尽可能多的优化。 - **-Os**: 优化大小,减少生成的代码量。 - **-flto**: 启用链接时优化。 9. **预处理器选项**: - **-D <macro>**: 定义宏。 - **-U <macro>**: 取消定义宏。 - **-include <file>**: 强制包含文件。 10. **传递选项给汇编器**: - **-masm=<option>**: 设置汇编器选项。 11. **链接选项**: - **-l <library>**: 链接指定的库。 - **-L <directory>**: 添加链接搜索目录。 12. **目录搜索选项**: - **-I <directory>**: 添加头文件搜索目录。 13. **指定目标机和编译器版本**: - **--target**: 指定目标平台。 - **--version**: 显示版本信息。 14. **硬件模型和配置**: - **M680x0Options**: Motorola 680x0系列选项。 - **VAXOptions**: VAX系列选项。 - **SPARCOptions**: SPARC系列选项。 - **ConvexOptions**: Convex系列选项。 - **AMD29KOptions**: AMD 29K系列选项。 - **ARMOptions**: ARM系列选项。 - **ThumbOptions**: ARM Thumb模式选项。 - **MN10200Options**: MN10200系列选项。 - **MN10300Options**: MN10300系列选项。 - **M32R/DOptions**: M32R/D系列选项。 - **M88KOptions**: M88K系列选项。 - **IBMRS/6000andPowerPCOptions**: IBM RS/6000和PowerPC系列选项。 - **IBMRTOptions**: IBM RT系列选项。 - **MIPSOptions**: MIPS系列选项。 - **Intel386Options**: Intel 386系列选项。 - **HPPAOptions**: HPPA系列选项。 - **Intel960Options**: Intel 960系列选项。 - **DECAlphaOptions**: DEC Alpha系列选项。 - **ClipperOptions**: Clipper系列选项。 - **H8/300Options**: H8/300系列选项。 - **SHOptions**: SH系列选项。 - **OptionsforSystemV**: System V系列选项。 - **TMS320C3x/C4xOptions**: TMS320C3x/C4x系列选项。 - **V850Options**: V850系列选项。 - **ARCOptions**: ARC系列选项。 - **NS32KOptions**: NS32K系列选项。 15. **代码生成约定选项**: - **-fPIC**: 生成位置无关代码。 - **-fpic**: 生成位置无关代码(较旧版本)。 - **-fPIE**: 生成位置无关可执行文件。 16. **影响GCC的环境变量**: - **CC**: 指定默认C编译器。 - **CXX**: 指定默认C++编译器。 - **CPPFLAGS**: 传递给预处理器的选项。 - **CFLAGS**: 传递给C编译器的选项。 - **CXXFLAGS**: 传递给C++编译器的选项。 - **LDFLAGS**: 传递给链接器的选项。 17. **运行Protoize**: - **protoize**: 用于将旧版的函数原型转换为现代格式。 #### 三、安装GNU CC GCC可以在多种平台上进行安装,包括但不限于Linux、Windows、macOS等。 1. **由configure生成的文件**: - **Makefile**: 包含编译指令。 - **config.h**: 包含配置信息。 2. **GNU CC支持的配置**: - **Linux**: 支持x86、ARM等多种架构。 - **macOS**: 支持x86_64架构。 - **Windows**: 通过MinGW提供支持。 3. **在单独目录中进行编译**: - **./configure**: 进行配置。 - **make**: 编译源代码。 - **make install**: 安装编译后的文件。 4. **构建和安装交叉编译器**: - **StepsofCross-Compilation**: 构建过程通常涉及配置、编译和安装三个步骤。 - **ConfiguringaCross-Compiler**: 使用`./configure --target=<target>`指定目标平台。 - **ToolsandLibrariesforaCross-Compiler**: 需要为特定的目标平台准备工具链和库。 - **libgcc.a and Cross-Compilers**: `libgcc.a`是GCC提供的库文件,用于支持交叉编译。 - **Cross-Compilers and Header Files**: 需要正确配置头文件路径,以便交叉编译器能够找到对应的头文件。 - **Actually Building the Cross-Compiler**: 执行`make`和`make install`完成构建和安装。 5. **在Sun上安装GNU CC**: - **Solaris**: 支持Solaris平台。 6. **在VMS上安装GNU CC**: - **VMS**: 支持VMS平台。 7. **collect2**: - **ld**: 链接器。 - **collect2**: 负责调用链接器。 8. **标准头文件目录**: - **/usr/include**: 默认位置。 - **/usr/local/include**: 用户自定义的位置。 #### 四、C语言家族的扩展 GCC对C语言进行了许多扩展,以增加其功能性和灵活性。 1. **表达式中的语句和声明**: - 允许在表达式中嵌入语句和声明。 2. **局部声明的标签**: - 允许在函数内部声明标签。 3. **标签作为值**: - 标签可以被当作一个值进行操作。 4. **嵌套函数**: - 允许在函数内部定义其他函数。 5. **构造函数调用**: - 提供了更灵活的方式来构造函数调用。 6. **命名表达式的类型**: - 通过`typeof`关键字指定表达式的类型。 7. **使用typeof引用类型**: - `typeof`: 用来引用类型的关键字。 8. **广义左值**: - 允许对某些表达式进行赋值。 9. **条件运算符省略操作数**: - 条件运算符允许省略某个操作数。 10. **双字整数**: - 支持更大的整数类型。 11. **复数**: - 提供复数类型的支持。 12. **十六进制浮点数**: - 支持十六进制形式表示的浮点数。 以上是GCC的一些主要知识点,涵盖了从基本的编译选项到高级的编程特性的方方面面,对于理解和使用GCC进行高效编程具有重要的指导意义。
- powerbamboo2015-01-06linux下必不可少啊,可惜我英文不好
- IT民工冯老师2020-08-28内容不错,不过里面内容不是最新版的
- 卷心恒远2011-10-20英文版的,不过内容也很系统的说明GCC应用
- 粉丝: 1
- 资源: 4
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- STM32芯片数据手册芯片资料STM32F102x8-B USB基本型系列中容量产品数据手册(2008年9月)
- 上市公司企业投资者关注度数据及公众关注度数据
- L2 林雪莹 202325220414.docx
- Altium Designer 25.0.2 Build 28 (x64)
- PC-7095E-2024 EN Design and Assembly Process Guidanc
- DS.SolidWorks.2025.SP0.Premium-SSQ
- yolov5的yolovs参数
- 通过C#实现抽象工厂模式(Abstract Factory Pattern).rar
- 通过java实现抽象工厂模式(Abstract Factory Pattern).rar
- 通过python实现抽象工厂模式(Abstract Factory Pattern).rar