20

While making a project with Makefile, I get this error:

error: implicit declaration of function ‘fatal’ [-Werror=implicit-function-declaration]

cc1: all warnings being treated as errors

The ./configure --help shows:

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

How can I tell configure not to include -Werror?

Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
mahmood
  • 23,197
  • 49
  • 147
  • 242

5 Answers5

32

Werror is a GCC argument, and you cannot remove it directly via ./configure. Otherwise, an option like --disable-error would show up in the help text. However, it's possible.

Set an environment variable:

export CFLAGS="-Wno-error"

That's for C compilers. If the project uses C++, do:

export CXXFLAGS="-Wno-error"

In the very rare case the project does not honor this variables, your last resort is to edit the configure.ac file and search for -Werror and remove it from the string it occurs in (be careful though).

Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
skim
  • 369
  • 3
  • 3
  • 7
    Please note that the difference between `CFLAGS` and `CPPFLAGS` is not that `CFLAGS` is used by C compilers and `CPPFLAGS` is used by C++ compilers, but that `CFLAGS` is used by the Compiler, and `CPPFLAGS` is used by the C Preprocessor. See this SO answer for more details: http://stackoverflow.com/questions/2754966/cflags-vs-cppflags – staticfloat Aug 07 '12 at 07:04
  • 3
    The comment above refers to the original answer, which had CPPFLAGS instead of CXXFLAGS. – Will Bickford Aug 29 '13 at 16:12
9

It seems like the feature has been in autotools for many years:

./configure --disable-werror

Unfortunately, I wasn't able to get the following specific case to work:

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

Maybe it could work if one escaped the '=' symbol, assuming it's possible. Like skim says, one can still use CFLAGS or CXXFLAGS.

Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
andrew-e
  • 724
  • 7
  • 10
3

I had to use --disable-Werror (with an uppercase W) on my module. While sudoman's answer above suggests to use --disable-werror (with a lowercase w).

It may look like a typo, but it is actually dependent on your particular configure setup, especially if configure is generated by autoconf. What needs to be passed to the configure script to disable Werror depends on how the build system was setup.

If your project uses the AX_COMPILER_FLAGS option from the autoconf-archive project, then by default -Werror is enabled.

In another module you may find something like this:

+AC_ARG_ENABLE([werror],
+          AC_HELP_STRING([--disable-werror],
+                 [do not build with -Werror]),

And thus you would need to use --disable-werror.

Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
lanoxx
  • 12,249
  • 13
  • 87
  • 142
1

This works for me, compiling curlpp on Lubuntu 16.10:

./configure --disable-ewarning
Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
FRL
  • 748
  • 7
  • 9
-2

I ran into this problem, and it turned out that GCC was not installed on my freshly-started EC2 instance running Ubuntu 20.04 (Focal Fossa).

Simply running sudo apt install gcc fixed this issue for me.

Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
  • How is it possible to get the error "`Werror=implicit-function-declaration`" without an installed compiler? Some other compiler? – Peter Mortensen Oct 25 '22 at 21:52