【问题标题】:How to compile without warnings being treated as errors?如何在不将警告视为错误的情况下进行编译?
【发布时间】:2012-07-18 15:53:59
【问题描述】:

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

cc1: warnings being treated as errors

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

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

【问题讨论】:

  • 我强烈建议尝试修复警告。如果不是立即,然后逐渐。删除 -Werror 后,您可以在删除警告后按目录重新添加它。
  • 即使您编译成功,它也可能无法按您预期的方式运行。我曾让一些人编写在 Windows 上运行良好但在 Linux 上立即崩溃的代码。
  • 感谢大家提供有用的 cmets 和答案。根据要求,我似乎必须修复我已经开始的所有警告。但现在我收到的警告来自 sqlite3.c:假设 (X - c)

标签: c gcc compiler-warnings


【解决方案1】:

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

【讨论】:

  • 感谢 Daniel,但我的项目中没有设置 -Werror 标志。我应该在其他地方寻找它吗?
  • 必须设置的地方,默认情况下,我知道的任何编译器都不会将警告视为错误。如果您找不到它,您可以尝试使用 -Wno-error 覆盖它,就像 nightcracker 建议的那样。这应该可以工作,除非 -Werror 在你在 makefile 中的 CFLAGS 中设置的标志之后传递。
【解决方案2】:

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

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


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

【讨论】:

    【解决方案3】:

    解决方案:

    CFLAGS=-Wno-error ./configure
    

    【讨论】:

      【解决方案4】:

      按照in this post的建议,从您的 Make 或 CMake 文件中删除 -Werror

      【讨论】:

        【解决方案5】:

        -Wall-Werror 编译器选项可能会导致此问题,请检查编译器设置中是否使用了这些选项。

        【讨论】:

          【解决方案6】:

          如果你正在编译 linux 内核。例如,如果要禁用“未使用但设置变量”的警告,则将其视为错误。可以添加语句:

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

          在你的 Makefile 中

          【讨论】:

            【解决方案7】:

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

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

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

            -fno-strict-overflow
            

            【讨论】:

            • 许多警告可以指出代码中存在问题的结构。禁用它们会让你在短期内继续前进,但你永远不会知道这些问题是否会再次困扰你。
            • 是的,你是对的。我的意思是我已经确保我的代码没有警告(我没有禁用所有警告)
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2022-07-20
            • 1970-01-01
            • 1970-01-01
            • 2015-09-24
            • 1970-01-01
            • 2011-04-30
            • 2010-11-02
            相关资源
            最近更新 更多