gcc编译显示"cc1: warnings being treated as errors"处理方法
有时候大型项目中,某些遗留编写不够完善,编译时候会出现以下warning。对于一些不重要的warning,可能希望直接忽略。但是,默认情况下,gcc会非常严格检查这些warning,甚至会视为error而终止编译。
例如,编译一个定制版本的libvirt,出现以下cc1: warnings being treated as errors
错误:
这里的报错是因为有没有使用的变量cmdlist
,导致编译器将warning视为error,停止继续编译。
在 How to compile without warnings being treated as errors? 有一个解决方法来关闭这种默认将warning作为error的行为。因为有时候并不想fix调所有warnings。
找到
-Werror
的设置位置,并将这个flag删除,这样warnings就只会作为warnings。也可以将所有的warnings都这样处理,即使用参数
-Wno-error
,或者设置特定的warning不作为error:-Wno-error=<warning name>
(这里的<warning name>
是你不希望作为error的warning)。如果希望将所有warning关闭,使用
-w
(但是不推荐)
例如:这里可以使用 -Wno-error=unused-but-set-variable
解决步骤
设置环境变量
/etc/profile
:
但是上述设置了-Wno-error=unused-but-set-variable
或者-Wno-error=unused-variable
都会导致
所以改成
感觉是gcc版本太低导致不支持
-Wno-error=unused-variable
(待验证)
参考
Last updated