编译器选项入门

编译器选项执行各种功能,如设置编译器特征、描述要生成的目标代码、控制发出的诊断消息和执行某些预处理器功能。可以在命令行、配置文件、源代码或这些技术的任何组合中指定编译器选项。未显式设置的大多数选项采用缺省设置。

当指定了多个编译器选项时,有可能发生选项冲突和不兼容性。为了以一致的方式解决这些冲突,除非另有指定,否则编译器应用以下优先级顺序:

  1. 源文件覆盖
  2. 命令行覆盖
  3. 配置文件覆盖
  4. 缺省设置

在多个命令行选项中,一般是最后指定的选项有效。

注:
-I 编译器选项是一种特殊情况。编译器在搜索在命令行上用 -I 指定的目录之前,它首先搜索在 vac.cfg 文件中用 -I 指定的任何目录。该选项是累积的而不是优先的。

具有累积行为的其它选项是 -R-l(小写 L)。

相关参考


编译器消息

XL C/C++ 对诊断消息使用五级别分类模式。每个严重性级别与一个编译器响应相关联。并非每个错误都会停止编译。下表对严重性级别的缩写提供了相应的键以及相关联的编译器响应。

严重性级别和编译器响应
字母 严重性 编译器响应
I 信息 编译继续进行。消息报告编译期间发现的情况。
W 警告 编译继续进行。消息报告有效但可能是意外的情况。
C E
错误 编译继续进行并生成目标代码。存在编译器可以更正但程序可能不会产生期望结果的错误状态。
S 严重错误 编译继续进行,但未生成目标代码。存在编译器不能更正的错误状态。
U 不可恢复的错误 编译器停止。遇到不可恢复的错误。如果消息指示资源限制(例如,文件系统已满或调页空间已满),则提供其它资源并重新编译。如果消息指示需要不同的编译器选项,使用它们重新编译。如果消息指示内部编译器错误,应向 IBM 服务代表报告该消息。

编译器的缺省行为是使用选项 -qnoinfo-qinfo=noall 进行编译。-qinfo 的子选项提供指定信息诊断的特定类别的能力。例如,-qinfo=por 将输出限制为与可移植性问题相关的那些消息。

注:
在 C 中,未指定子选项的选项 -qinfo 等价于 -qinfo=all;在 C++ 中,未指定子选项的 -qinfo 等价于 -qinfo=all:noppt

返回码

在编译结束时,在以下任何一种情况下,编译器将返回码设置为零:

否则,编译器将设置 XL C/C++ Compiler Reference 中介绍的返回码之一。

相关参考

编译器消息格式

缺省情况下,诊断消息具有下列格式:

"file", line line_number.column_number: 15cc-nnn (severity) message_text

其中 15 是编译器产品标识,cc 是指示发出消息的编译器组件的一个两位数的代码,nnn 是消息号,severity 是严重性级别的字母。cc 的可能值有:

00
代码生成或优化消息
01
编译器服务消息
05
特定于 C 编译器的消息
06
特定于 C 编译器的消息
40
特定于 C++ 编译器的消息
86
特定于过程间分析(IPA)的消息

此格式与启用e -qnosrcmsg 选项进行编译时的格式相同。要获取另一种消息格式,使源代码行与诊断消息一起显示,则尝试用 -qsrcmsg 选项进行编译。启用此选项会指导编译器将它认为包含错误的源代码行、该源代码行下面指向该源代码行的特定点的某行(若有可能)和诊断消息打印至标准错误。

注:
不会将消息用作其它程序的输入。消息格式和内容不打算成为编程接口,因此可能在发行版之间更改。

相关参考


特定于平台的选项

本页面特别介绍了在 Linux 平台上使用编译器的基本选项。

请参阅 XL C/C++ Compiler Reference 以获取更多信息。

选择的特定于 Linux 平台的编译器选项
选项名 描述
-qgcc_c_stdinc=<paths> 指定 GNU C 头文件的目录搜索路径。
-qgcc_cpp_stdinc=<paths> 指定 GNU C++ 头文件的目录搜索路径。
-qc_stdinc=<paths> 指定 IBM C 头文件的目录搜索路径。
-qcpp_stdinc=<paths> 指定 IBM C++ 头文件的目录搜索路径。

以下选项提供对目录搜索路径的专门控制。这些选项是累积的而不是优先的。在命令行上用选项 -L-R-l(小写 L)指定的路径在链接时将具有比配置文件中指定为选项的路径更低的优先级,但具有比配置文件中指定为属性的路径更高的优先级。

选择的路径控制选项
选项名 描述
-I 指定要搜索 #include 文件的其它目录路径。
-l 指定用于静态链接的共享库或归档文件。
-L 指定在链接时要搜索的库搜索路径。
-R 指定在运行时要搜索以获取动态装入的库的目录路径。

相关参考

IBM Copyright 2003