GCC编译器选项深度解析:-0, -l, -c, -g, -wall

需积分: 13 4 下载量 56 浏览量 更新于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编译器行为的广泛控制,允许开发者根据项目需求进行精确的编译配置。了解并熟练使用这些选项能够提高代码的编译效率和质量,同时也方便调试和维护。"