禁用“配置”文件中的错误

问题描述 投票:0回答:5

使用 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

makefile configure
5个回答
34
投票

Werror是一个GCC参数,你不能直接通过./configure删除它。否则,像

--disable-error
这样的选项会出现在帮助文本中。不过,这是可能的。

设置环境变量:

export CFLAGS="-Wno-error"

这是针对 C 编译器的。如果项目使用 C++,请执行以下操作:

export CXXFLAGS="-Wno-error"

在极少数情况下,项目不支持此变量,您最后的手段是编辑

configure.ac
文件并搜索
-Werror
并将其从出现的字符串中删除(但要小心)。


9
投票

这个功能似乎已经在 autotools 中存在很多年了:

./configure --disable-werror

不幸的是,我无法让以下具体案例发挥作用:

./configure --enable-wno-error=unused-value

如果可以的话,如果有人转义“

=
”符号,也许它可以工作。就像 skim 所说的那样,人们仍然可以使用
CFLAGS
CXXFLAGS


3
投票

我必须在我的模块上使用

--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


1
投票

这对我有用,在 Lubuntu 16.10:

上编译curpp
./configure --disable-ewarning

-2
投票

我遇到了这个问题,结果发现在我新启动的运行 Ubuntu 20.04 (Focal Fossa) 的 EC2 实例上未安装 GCC 只需运行

sudo apt install gcc

就为我解决了这个问题。

    

© www.soinside.com 2019 - 2024. All rights reserved.