error: conflicting types for ‘strsignal’... et al, while installing in Ubuntu

Ian Lance Taylor iant@google.com
Fri Dec 2 18:36:00 GMT 2011


Pablo Barrio <pbarrio@die.upm.es> writes:

> In config.log:
>
> -----------------
>
> configure:8845: checking for strsignal
> configure:8845: result: yes
> ...
> configure:10068: checking whether strsignal is declared
> configure:10100: result: yes
> ...
> ac_cv_func_strsignal=yes
> ...
> gcc_cv_have_decl_strsignal=yes
>
> ------------------
>
> So... the strsignal test didn't fail. In auto-host.h, included by config.h:
>
> /* Define to 1 if you have the `strsignal' function. */
> #ifndef USED_FOR_TARGET
> #define HAVE_STRSIGNAL 1
> #endif
>
> I've tried to edit auto-host.h to see if HAVE_STRSIGNAL was defined at preprocessing, but the file seems to be autogenerated so my modifications are lost.
>
> On 02/12/2011, at 16:09, Ian Lance Taylor wrote:
>
>> Pablo Barrio <pbarrio@die.upm.es> writes:
>> 
>>> In file included from ../../gcc-v4.6.1/gcc/c-lang.c:24:0:
>>> ../../gcc-v4.6.1/gcc/system.h:462:20: error: conflicting types for ‘strsignal’
>>> /usr/include/string.h:566:14: note: previous declaration of ‘strsignal’ was here
>> 
>> Look in gcc/config.h.  I predict that HAVE_STRSIGNAL is not defined,
>> although your system does have strsignal.  Look in gcc/config.log and
>> try to find out why the test for strsignal failed.


(Please don't top-post.  Thanks.)

Interesting.  The lines from system.h are

#if !defined (HAVE_STRSIGNAL) \
    || (defined (HAVE_DECL_STRSIGNAL) && !HAVE_DECL_STRSIGNAL)
# ifndef strsignal
extern const char *strsignal (int);
# endif
#endif

You show above that HAVE_STRSIGNAL is defined.  Also setting
gcc_cv_have_decl_strsignal implies that HAVE_DECL_STRSIGNAL is defined
to 1.  In that case I have no idea why that declaration will be
compiled.  Clearly it is being compiled because you are getting an error
about it.

I guess I would suggest running the failing compile command with -E and
see if you can see what is happening.  If you are compiling gcc with
another version of gcc, then it may help to use -dD with -E to see where
HAVE_STRSIGNAL and HAVE_DECL_STRSIGNAL are being defined.

Ian



More information about the Gcc-help mailing list