我正在GCC编译农场和GCC119上进行测试。GCC119是一台AIX机器,具有xlC 13.1编译器。我对平台和编译器知之甚少。
当我在xlC下构建时:
$ CXX=xlC gmake CXXFLAGS="-DNDEBUG -g2 -O3 -qrtti" -j 8
xlC -DNDEBUG -g2 -O3 -qrtti -c cryptlib.cpp
xlC -DNDEBUG -g2 -O3 -qrtti -c cpu.cpp
...
xlC -DNDEBUG -g2 -O3 -qrtti -c hmac.cpp
1500-036: (I) The NOSTRICT option (default at OPT(3)) has the potential to alter the
semantics of a program. Please refer to documentation on the STRICT/NOSTRICT option
for more information.
...
编译器的IBM手册位于编译器参考v13.1。它没有提到STRICT
或NOSTRICT
。基于关键字搜索的最接近的方法是讨论__C99_RESTRICT
在-qkeyword=restrict
生效时的情况。此外,没有手册页:
$ man NOSTRICT
Manual entry for NOSTRICT not found or not installed.
$ man 3 NOSTRICT
There is not an entry for NOSTRICT in section 3.
$ man STRICT
Manual entry for STRICT not found or not installed.
$ man 3 STRICT
There is not an entry for STRICT in section 3.
$ man OPT
Manual entry for OPT not found or not installed.
$ man 3 OPT
There is not an entry for OPT in section 3.
当我用-qflag=w
编译时,警告就会消失,所以我使用的信息就更少了。(库和程序使用-qflag=w
进行干净的编译)。
我有两个问题。首先,xlC到底在抱怨什么?第二,是否有选项让xlC告诉我它正在抱怨的源文件和行号?
发布于 2017-09-01 14:16:36
如果您查找有关-qstrict和-qnostrict选项的信息,您应该在PDF格式中的HTML格式或第349页(如果按页码)或第367页(如果您正在使用PDF页面高级程序)中找到。
由于您使用的是-O3 (OPT(3)),正如消息所述,默认情况下,-qnostrict选项是有效的,这意味着与使用-qstrict编译的编译相比,执行更积极的优化以创建更快的可执行文件,而代价是程序中的语义差异很小。请查看文档(以下复制),以具体了解这意味着什么;如果下面提到的任何差异对您都很重要,请使用-O3 -qstrict进行编译,以防止出现这些语义差异,但您的应用程序性能可能不那么好。
在-qnostrict生效后,将打开以下优化:
您的man命令不会像编写的那样工作,因为NOSTRICT
、STRICT
和OPT
是编译器选项,不能与man一起使用。为了查看编译器手册页,需要使用man xlC
。
没有与此信息相关的源文件和行号信息,因为它是一条通用消息,可以跨使用-O3编译的所有文件。
如果您想对文档(包括手册页、在线文档等)提供反馈,IBM正在寻找反馈。。
IBM /C++用于AIX,V13.1的完整文档可以在HTML格式或PDF格式中找到。有几本“书籍”组成了完整的编译器文档,包括编译器参考。
https://stackoverflow.com/questions/45995061
复制相似问题