【问题标题】:Make errors - can the gcc compiler warnings prevent a C file from being compiled into an object file?出错 - gcc 编译器警告能否阻止 C 文件被编译成目标文件?
【发布时间】:2010-05-11 20:38:27
【问题描述】:

我正在尝试为我的 Linux 机器编译无线网卡驱动程序,但我遇到了 Make 命令的问题。在编译过程中,我通常会在一些正在编译的 C 文件上看到警告;尽管有警告,这些文件仍然能够编译为目标文件。

当 Make 进程遇到一个名为 rtmp_wext.c 的文件时,编译器会产生大量警告,然后整个 Make 进程停止并返回错误 1 ​​的退出状态,即 make: *** [rtmp_wext.o] Error 1强>。通常我会看到 C 文件出现错误,导致编译停止。这似乎是编译器警告第一次阻止文件转换为目标文件。这是可能的还是其他原因导致编译不成功?

【问题讨论】:

  • 我会将输出保存到文件中(使用屏幕、脚本或普通的 'ol 重定向),然后 grep 它。在一堆警告中错过一个错误真的很容易。
  • 您是否有可能使用-jN 标志进行编译,因此警告实际上来自同时发生的不同工作?
  • 我将输出重定向到一个文件,其中唯一带有错误字的行是我发布的那一行。所有其他有问题的行都有警告标签。否 -jN 标志未与编译一起使用。
  • @Xolstice:那么我建议遵循迈克尔的建议 - 看看 make 实际上是否正在运行除 gcc 之外的命令(例如,尝试将对象移动到另一个目录但失败)错误。
  • 制定一个特定于 rtmp_wext.o 的规则可能会很有用,该规则除了 gcc 之外什么都不做......,然后看看 Make 是否会失败。

标签: gcc compiler-construction makefile gcc-warning


【解决方案1】:

如果 gcc 正在传递 -Werror 选项,它将;它会导致警告被视为错误,但它们也会被重新标记为“错误”而不是“警告”,所以如果你看到“警告”,那不是它。可能是其他命令 make 正在运行;您可以尝试以详细模式运行它,或者只是检查 Makefile 以查看它正在执行的命令

【讨论】:

    【解决方案2】:

    您可以通过在命令的开头(制表符之后)放置一个“-”来告诉 Make 忽略该错误。如果这是您自己的代码,我建议您不要忽略症状,但我猜您不想调试此代码。

    您说您可以编译带有大量警告的 rtmp_wext.o。我同意德罗伯特的评论;那里很可能有错误。如果有,则无法保证 rtmp_wext.o 会真正起作用,无论它是否起作用,您都应该找到错误消息并告诉编写驱动程序的人。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-02
      • 1970-01-01
      • 2021-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多