GCC编译器选项深度解析:-0, -l, -c, -g, -wall
需积分: 13 43 浏览量
更新于2024-09-16
收藏 1KB TXT 举报
"GCC是GNU Compiler Collection的缩写,是一个开源的编译器系统,支持多种编程语言,如C、C++、Objective-C等。本文主要介绍GCC编译器的常用选项,包括预处理、汇编、链接等阶段的选项设置,以帮助开发者更有效地控制编译过程。
### 预处理器选项
- `-Aquestion=answer` 和 `-A-question[=answer]`: 这些选项用于向预处理器传递信息,通常用于调试或特殊需求。
- `-C`: 保留注释到输出文件中。
- `-dD`: 打印定义的宏,包括标准库中的宏。
- `-dI`: 显示包含文件搜索路径。
- `-dM`: 生成宏定义列表。
- `-dN`: 与`-dM`类似,但不包括标准库的宏。
- `-Dmacro[=defn]`: 定义宏`macro`,可选地指定默认值`defn`。
- `-E`: 只进行预处理阶段,不进行编译和链接。
- `-H`: 显示包含文件及其来源。
- `-idirafterdir`: 添加目录`dir`到包含文件搜索路径的末尾。
- `-includefile`: 直接包含指定的文件。
- `-imacrosfile`: 从`file`中读取预定义的宏。
- `-iprefixfile`: 从`file`中读取包含文件的前缀。
- `-iwithprefixdir` 和 `-iwithprefixbeforedir`: 控制包含文件路径的处理。
- `-isystemdir`: 把`dir`作为系统头文件目录。
- `-isysrootdir`: 设置系统根目录。
- `-M`, `-MM`: 生成依赖文件,用于Makefile。
- `-MF file`: 指定依赖文件的输出位置。
- `-MG`: 自动解决缺失的头文件。
- `-MP`: 在依赖文件中为每个目标创建一个假目标。
- `-MQ target`: 将目标包装在`'`和`'`之间。
- `-MT target`: 修改依赖目标的名称。
- `-nostdinc`: 不使用标准系统头文件目录。
- `-P`: 不生成行号和文件名信息。
- `-fworking-directory`: 用工作目录替换相对路径。
- `-remap`: 重映射源文件路径。
- `-trigraphs`: 启用或禁用三字符替代。
- `-undef`: 清除所有未定义的宏。
### 汇编器选项
- `-Wa,option`: 传递选项给汇编器。
- `-Xassembler option`: 类似于`-Wa`,但用于特定的汇编器。
### 链接器选项
- `object-file-name`: 指定输出的可执行文件或对象文件的名称。
- `-llibrary`: 链接指定的库`library`。
- `-nostartfiles`: 不包含启动文件。
- `-nodefaultlibs`: 不链接默认的系统库。
- `-nostdlib`: 不使用标准启动文件和库。
- `-pie`: 创建位置独立的可执行文件。
- `-rdynamic`: 使动态链接器符号可见。
- `-s`: 删除所有符号信息,生成二进制文件。
- `-static`: 使用静态链接。
- `-static-libgcc`: 静态链接`libgcc`库。
- `-shared`: 生成共享库。
- `-shared-libgcc`: 动态链接`libgcc`库。
- `-symbolic`: 共享所有全局符号。
- `-Wl,option`: 传递选项给链接器。
- `-Xlinker option`: 类似于`-Wl`,但用于特定的链接器。
- `-usymbol`: 从链接中排除符号`symbol`。
### 目录选项
- `-Bprefix`: 设置编译工具的搜索路径前缀。
- `-Idir`: 添加`dir`到头文件搜索路径。
- `-iquotedir`: 把`dir`作为一个引用目录(避免路径扩展)。
- `-Ldir`: 添加`dir`到库搜索路径。
- `-specs=file`: 从`file`中获取编译器规格。
- `-I--sysroot=dir`: 设置系统根目录。
### 目标选项
- `-V`: 显示版本信息。
- `-bmachine`: 指定目标机器架构。
### 其他选项
- `-ansi`: 按照ANSI C标准进行编译(等同于`-std=c89`)。
- `-std=standard`: 指定C语言标准,如`c99`, `c11`等。
- `-aux-info filename`: 把辅助信息写入`filename`。
- `-fno-asm`: 禁止内联汇编。
- `-fno-builtin`: 禁用内置函数。
- `-fno-builtin-function`: 禁用特定的内置函数。
- `-fhosted` 和 `-ffreestanding`: 分别指定是否为宿主环境或自由站立环境。
- `-fms-extensions`: 启用Microsoft Visual C++的语法扩展。
- `-trigraphs`: 启用或禁用三字符替代。
- `-fno-integrated-cpp`: 使用分离的预处理器。
- `-traditional` 和 `-traditional-cpp`: 使用传统的C预处理器。
- `-fallow-single-precision`: 允许单精度浮点运算。
- `-fcond-mismatch`: 在条件表达式中允许类型不匹配。
- `-fsigned-bitfields`: 指定位字段为有符号类型。
- `-fsigned-char`: 把`char`类型视为有符号类型。
- `-funsigned-bit`: 指定位字段为无符号类型。
这些选项提供了对GCC编译器行为的广泛控制,允许开发者根据项目需求进行精确的编译配置。了解并熟练使用这些选项能够提高代码的编译效率和质量,同时也方便调试和维护。"
2012-06-16 上传
2011-05-11 上传
2009-10-26 上传
2023-05-15 上传
2012-08-30 上传
2019-06-15 上传
2011-06-21 上传
2021-09-21 上传
chenxinyufang
- 粉丝: 0
- 资源: 10
最新资源
- 黑板风格计算机毕业答辩PPT模板下载
- CodeSandbox实现ListView快速创建指南
- Node.js脚本实现WXR文件到Postgres数据库帖子导入
- 清新简约创意三角毕业论文答辩PPT模板
- DISCORD-JS-CRUD:提升 Discord 机器人开发体验
- Node.js v4.3.2版本Linux ARM64平台运行时环境发布
- SQLight:C++11编写的轻量级MySQL客户端
- 计算机专业毕业论文答辩PPT模板
- Wireshark网络抓包工具的使用与数据包解析
- Wild Match Map: JavaScript中实现通配符映射与事件绑定
- 毕业答辩利器:蝶恋花毕业设计PPT模板
- Node.js深度解析:高性能Web服务器与实时应用构建
- 掌握深度图技术:游戏开发中的绚丽应用案例
- Dart语言的HTTP扩展包功能详解
- MoonMaker: 投资组合加固神器,助力$GME投资者登月
- 计算机毕业设计答辩PPT模板下载