使用 Makefile 制作项目时,出现此错误:
error: implicit declaration of function ‘fatal’ [-Werror=implicit-function-declaration]
cc1: all warnings being treated as errors
./configure --help
显示:
Optional Features:
--disable-option-checking ignore unrecognized --enable/--with options
--disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
--enable-FEATURE[=ARG] include FEATURE [ARG=yes]
--disable-dependency-tracking speeds up one-time build
--enable-dependency-tracking do not reject slow dependency extractors
--disable-gtktest do not try to compile and run a test GTK+ program
--enable-debug Turn on debugging
如何告诉 configure 不要包含 -Werror?
Werror是一个GCC参数,你不能直接通过./configure删除它。否则,像
--disable-error
这样的选项会出现在帮助文本中。不过,这是可能的。
设置环境变量:
export CFLAGS="-Wno-error"
这是针对 C 编译器的。如果项目使用 C++,请执行以下操作:
export CXXFLAGS="-Wno-error"
在极少数情况下,项目不支持此变量,您最后的手段是编辑
configure.ac
文件并搜索 -Werror
并将其从出现的字符串中删除(但要小心)。
这个功能似乎已经在 autotools 中存在很多年了:
./configure --disable-werror
不幸的是,我无法让以下具体案例发挥作用:
./configure --enable-wno-error=unused-value
如果可以的话,如果有人转义“
=
”符号,也许它可以工作。就像 skim 所说的那样,人们仍然可以使用 CFLAGS
或 CXXFLAGS
。
我必须在我的模块上使用
--disable-Werror
(带有大写的W
)。虽然上面sudoman的回答建议使用--disable-werror
(使用小写w
)。
它可能看起来像一个拼写错误,但它实际上取决于您特定的
configure
设置,特别是如果 configure
是由 autoconf
生成的。需要传递给 configure
脚本来禁用 Werror
的内容取决于构建系统的设置方式。
如果您的项目使用 autoconf-archive
项目中的
AX_COMPILER_FLAGS选项,则默认情况下启用
-Werror
。
在另一个模块中,您可能会发现类似这样的内容:
+AC_ARG_ENABLE([werror],
+ AC_HELP_STRING([--disable-werror],
+ [do not build with -Werror]),
因此您需要使用
--disable-werror
。
这对我有用,在 Lubuntu 16.10:
上编译curpp./configure --disable-ewarning