2012-09-03 3 views
8

Ich versuche, g ++ 4.7.1 aus der Quelle auf Ubuntu 12.04 32 Bit zu kompilieren. Für den Moment habe ich genau das getan: https://askubuntu.com/questions/168947/how-to-upgrade-g-to-4-7-1 Außer kurz vor der Kompilierung von g ++ 4.7.1 fragt es mich, "LIBRARY_PATH" zu deaktivieren (so habe ich das getan). So ist die Zusammenstellung beginnt, und nach einer Weile habe ich die folgende Fehlermeldung:g ++ 4.7.1 Kompilierfehler: widersprüchliche Typen für 'Strsignal'

In file included from ../.././gcc/c-lang.c:24:0: 
../.././gcc/system.h:499:20: erreur: conflicting types for ‘strsignal’ 
/usr/include/string.h:566:14: note: previous declaration of ‘strsignal’ was here 
In file included from ./tm.h:19:0, 
       from ../.././gcc/c-lang.c:26: 
./options.h:3738:2: erreur: #error too many masks for ix86_isa_flags 
In file included from ../.././gcc/input.h:25:0, 
       from ../.././gcc/tree.h:27, 
       from ../.././gcc/c-lang.c:27: 
../.././gcc/../libcpp/include/line-map.h:208:38: erreur: ‘CHAR_BIT’ undeclared here (not in a function) 
../.././gcc/../libcpp/include/line-map.h:208:3: erreur: bit-field ‘reason’ width not an integer constant 
../.././gcc/../libcpp/include/line-map.h:208:3: attention : ‘reason’ is narrower than values of its type [enabled by default] 
In file included from ../.././gcc/tree.h:32:0, 
       from ../.././gcc/c-lang.c:27: 
../.././gcc/hwint.h:17:39: erreur: division par zéro dans #if 
../.././gcc/hwint.h:17:39: erreur: division par zéro dans #if 
../.././gcc/hwint.h:17:39: erreur: division par zéro dans #if 
../.././gcc/hwint.h:17:39: erreur: division par zéro dans #if 
../.././gcc/hwint.h:17:39: erreur: division par zéro dans #if 
../.././gcc/hwint.h:17:39: erreur: division par zéro dans #if 
../.././gcc/hwint.h:17:39: erreur: division par zéro dans #if 
../.././gcc/hwint.h:17:39: erreur: division par zéro dans #if 
../.././gcc/hwint.h:17:39: erreur: division par zéro dans #if 
../.././gcc/hwint.h:17:39: erreur: division par zéro dans #if 
../.././gcc/hwint.h:17:39: erreur: division par zéro dans #if 
../.././gcc/hwint.h:17:39: erreur: division par zéro dans #if 
../.././gcc/real.h:105:9: erreur: #error "REAL_WIDTH > 6 not supported" 
In file included from ../.././gcc/c-family/c-common.h:26:0, 
       from ../.././gcc/c-tree.h:25, 
       from ../.././gcc/c-lang.c:28: 
../.././gcc/../libcpp/include/cpplib.h:225:3: erreur: bit-field ‘type’ width not an integer constant 
../.././gcc/../libcpp/include/cpplib.h:225:3: attention : ‘type’ is narrower than values of its type [enabled by default] 
../.././gcc/../libcpp/include/cpplib.h:267:3: erreur: #error "Cannot find a least-32-bit signed integer type" 
../.././gcc/../libcpp/include/cpplib.h:269:35: erreur: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘cppchar_t’ 
../.././gcc/../libcpp/include/cpplib.h:270:1: erreur: unknown type name ‘CPPCHAR_SIGNED_T’ 
../.././gcc/../libcpp/include/cpplib.h:768:1: erreur: unknown type name ‘cppchar_t’ 
../.././gcc/../libcpp/include/cpplib.h:779:1: erreur: unknown type name ‘cppchar_t’ 
../.././gcc/../libcpp/include/cpplib.h:779:58: erreur: unknown type name ‘cppchar_t’ 
../.././gcc/../libcpp/include/cpplib.h:954:1: erreur: unknown type name ‘cppchar_t’ 

(sorry, einige Fehlermeldungen sind auf französisch: erreur -> error und division par zéro dans #if -> division by zero in #if).

Was ist das Problem und wie man es löst?

(eine andere kleine Frage: Was ist der Unterschied zwischen ./configure und ./configure -v)

EDIT: die Linien des strsignal in system.h

/* If the system doesn't provide strsignal, we get it defined in 
    libiberty but no declaration is supplied. */ 
#if !defined (HAVE_STRSIGNAL) \ 
    || (defined (HAVE_DECL_STRSIGNAL) && !HAVE_DECL_STRSIGNAL) 
# ifndef strsignal 
extern const char *strsignal (int); 
# endif 
#endif 
+0

Ich habe vor kurzem gcc 4.7.1 aus der Quelle gebaut - vielleicht werden meine Notizen hilfreich sein: http://steve-lorimer.blogspot.com.au/2012/08/building-gcc.html –

Antwort

5

Ich hatte das gleiche Problem. In meinem Fall habe ich es gelöst, indem ich die Bash-Variablen CPATH, LIBRARY_PATH und C_INCLUDE_PATH deaktiviert habe. Danach ging der Build gut.

8

I verwendet

unset LIBRARY_PATH CPATH C_INCLUDE_PATH PKG_CONFIG_PATH CPLUS_INCLUDE_PATH INCLUDE 

Da ich keinen Root-Zugang zu diesem Rechner haben und so habe ich eine Menge dieser Variablen angehängt.

+1

Das hat nur Fehler behoben Ich kompiliere gcc 5.3.0 (die akzeptierte Antwort hat nicht genug ausgeräumt) –

0

Ich verwendete "unset LIBRARY_PATH CPATH C_INCLUDE_PATH PKG_CONFIG_PATH CPLUS_INCLUDE_PATH INCLUDE". Das hat mein Problem gelöst.

0

Andere Lösungen funktionierten nicht für mich, weil ich diese env-Variablen verwende, um gcc auf einige seiner Abhängigkeiten zu verweisen. Auch unset ting variit klingt nicht wie eine sehr präzise fix :)

stellt sich heraus, das Problem ist, ich einige meiner env Hinter : hatte Vars Erklärungen, etwa so:

$ export LIBRARY_PATH=/foo/bar:$LIBRARY_PATH 
$ echo $LIBRARY_PATH 
/foo/bar: 

Das Ergebnis ist, dass LIBRARY_PATH wird immer auch das aktuelle Verzeichnis einbeziehen. Das Problem wurde behoben, indem die env-Variablen richtig eingestellt wurden, ohne dass : nachgestellt wurde.