如何编译没有警告被视为错误?

时间:2012-07-19 12:51:16

标签: c gcc compiler-warnings

问题是在Windows上编译良好的相同代码无法在Ubuntu上编译。每次我收到此错误:

cc1: warnings being treated as errors

现在,这是一个很大的代码库,我不喜欢修复所有警告。

有什么方法可以成功编译,尽管有警告吗?

7 个答案:

答案 0 :(得分:64)

当然,找到-Werror设置的位置并删除该标志。然后警告只是警告。

答案 1 :(得分:25)

您可以使用-Wno-error对所有警告进行处理。您可以使用-Wno-error=<warning name>来处理特定警告,其中<warning name>是您不希望将其视为错误的警告的名称。

如果您想完全禁用所有警告,请使用-w(不推荐)。


来源:http://gcc.gnu.org/onlinedocs/gcc-4.3.2/gcc/Warning-Options.html

答案 2 :(得分:9)

解决方案:

CFLAGS=-Wno-error ./configure

答案 3 :(得分:4)

如果你正在编译linux内核。例如,如果要禁用&#34; unused-but-set-variable&#34;被视为错误。您可以添加声明:

KBUILD_CFLAGS += $(call cc-option,-Wno-error=unused-but-set-variable,)
中的

答案 4 :(得分:4)

按照建议in this post

从Make或CMake文件中删除java.util.MissingFormatArgumentException: Format specifier '%2d' at java.util.Formatter.format(Formatter.java:2519) at java.io.PrintStream.format(PrintStream.java:970) at java.io.PrintStream.printf(PrintStream.java:871) at Survey.main(Survey.java:127) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

答案 5 :(得分:2)

感谢所有有用的建议。我终于确保我的代码中没有警告,但是再次从sqlite3收到此警告:

Assuming signed overflow does not occur when assuming that (X - c) <= X is always true

我通过添加以下CFLAG来修复:

-fno-strict-overflow

答案 6 :(得分:1)

-Wall-Werror编译器选项可能会导致它,请检查它们是否在编译器设置中使用。