Gcc 摆脱;警告:取消引用类型“双关指针”;

Gcc 摆脱;警告:取消引用类型“双关指针”;,gcc,cobol,gnucobol,Gcc,Cobol,Gnucobol,我正在用一个简单的Hello World示例试用OpenCobol IDENTIFICATION DIVISION. PROGRAM-ID. HELLO. PROCEDURE DIVISION. DISPLAY "Hello World". STOP RUN. 我用 cobc -x -free -o hello hello.cbl 并获得一个可行的可执行文件,但也有许多来自gcc的警告 warning: dereferencing type-punned pointer wi

我正在用一个简单的Hello World示例试用OpenCobol

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
PROCEDURE DIVISION.
    DISPLAY "Hello World".
    STOP RUN.
我用

cobc -x -free -o hello hello.cbl
并获得一个可行的可执行文件,但也有许多来自gcc的警告

warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]

从谷歌搜索中,我能找到的就是,我显然可以忽略这些,而不会产生不良影响。但出于各种原因,我想真正摆脱它们,如果没有别的,那么至少以某种方式抑制它们。我怎样才能做到这一点呢?

在您调用gcc编译器的幕后某处。尝试设置编译器选项以关闭警告


该选项应类似于:
-Wno strict

从它看来,您需要使用
-fno strict aliasing
选项。不能在这里尝试,因为我们不使用OpenCobol。

使用-O来降低优化

我本以为这会应用于C代码生成,而不会传递给gcc

如果你喜欢绝对控制gcc

编写一个脚本来包装您的构建。 (通过1)从cobc生成翻译后的C代码。 (通过2)使用gcc编译(优化较少)。 在一个大型项目中,你可以为一个完整的构建嵌套脚本

为了控制C编译阶段,OpenCOBOL在构建链期间考虑一些环境变量


有关列表,请参阅,包括COB\u CFLAGS和COB\u LDFLAGS

似乎不起作用。我尝试了
-Wno strict
Wno strict别名
,但我认为OpenCobol不会将其传递给gccmmmm。刚刚将OpenCobol的1.1版下载到我的Fedora14机器上,创建了示例程序并进行了编译。我没有收到任何消息,它编译和执行得很好。你用的是什么版本?好像不起作用。这些都是适用于GCC的选项,但OpenCobol不理解它们,也不传递它们。我刚刚收到一个“无法识别的选项”警告。现在我正在使用
/dev/null 2>&1
删除所有输出,但最好不要丢弃所有内容,包括任何潜在的实际错误。我使用OpenCobol 1.0.0和GCC 4.6.1,错误来自GCC,但我无法将选项传递给GCC,因为当您执行
cob配置--cflags
时,它是通过OpenCobol调用的?我得到:
-I/usr/include-pipe-Wall-Wp,-D_FORTIFY_SOURCE=2-feexceptions-fstack protector-param=ssp buffer size=4-m32-march=i686-mtune=atom-fasynchronous unwind tables-fPIC
。你能升级到1.1版看看它是否有什么不同吗?
命令找不到
-我不想升级。在你否决之前,它是前一段时间写的,当前的构建行为12/2014不一样。在任何情况下,如果您正在调试脚本,那么脚本方法可能仍然是相关的。因为在任何情况下,您都将使用C源代码进行调试。