Linux From Scratch 7.2: Fehler beim Erstellen von binutils-2.22 in Kapitel 6


7

Beim Ausführen wird der folgende Fehler angezeigt make tooldir=/usr

../../binutils-2.22/libiberty/regex.c:130:1: warning: function declaration isn't a prototype [-Wstrict-prototypes]
../../binutils-2.22/libiberty/regex.c:130:7: warning: conflicting types for built-in function 'malloc' [enabled by default]
../../binutils-2.22/libiberty/regex.c:131:1: warning: function declaration isn't a prototype [-Wstrict-prototypes]
../../binutils-2.22/libiberty/regex.c:131:7: warning: conflicting types for built-in function 'realloc' [enabled by default]
In file included from /usr/include/bits/string2.h:1296:0,
             from /usr/include/string.h:633,
             from ../../binutils-2.22/libiberty/regex.c:149:
/usr/include/stdlib.h:470:14: error: conflicting types for 'malloc'
../../binutils-2.22/libiberty/regex.c:130:7: note: previous declaration of 'malloc' was here
In file included from ../../binutils-2.22/libiberty/regex.c:638:0:
../../binutils-2.22/libiberty/regex.c: In function 'byte_regex_compile':
../../binutils-2.22/libiberty/regex.c:2439:7: warning: implicit declaration of function 'free' [-Wimplicit-function-declaration]
../../binutils-2.22/libiberty/regex.c:2439:33: warning: incompatible implicit declaration of built-in function 'free' [enabled by default]
../../binutils-2.22/libiberty/regex.c:2500:17: warning: incompatible implicit declaration of built-in function 'free' [enabled by default]
../../binutils-2.22/libiberty/regex.c:2533:36: warning: incompatible implicit declaration of built-in function 'free' [enabled by default]
../../binutils-2.22/libiberty/regex.c:2640:28: warning: incompatible implicit declaration of built-in function 'free' [enabled by default]
../../binutils-2.22/libiberty/regex.c:3643:26: warning: incompatible implicit declaration of built-in function 'free' [enabled by default]
../../binutils-2.22/libiberty/regex.c:4150:5: warning: incompatible implicit declaration of built-in function 'free' [enabled by default]
../../binutils-2.22/libiberty/regex.c: In function 'byte_re_compile_fastmap':
../../binutils-2.22/libiberty/regex.c:4835:11: warning: implicit declaration of function 'abort' [-Wimplicit-function-declaration]
../../binutils-2.22/libiberty/regex.c:4835:11: warning: incompatible implicit declaration of built-in function 'abort' [enabled by default]
../../binutils-2.22/libiberty/regex.c: In function 'byte_re_match_2_internal':
../../binutils-2.22/libiberty/regex.c:7424:11: warning: incompatible implicit declaration of built-in function 'abort' [enabled by default]
../../binutils-2.22/libiberty/regex.c: In function 'xregcomp':
../../binutils-2.22/libiberty/regex.c:7978:4: warning: incompatible implicit declaration of built-in function 'free' [enabled by default]
../../binutils-2.22/libiberty/regex.c: In function 'xregexec':
../../binutils-2.22/libiberty/regex.c:8053:7: warning: incompatible implicit declaration of built-in function 'free' [enabled by default]
../../binutils-2.22/libiberty/regex.c: In function 'xregerror':
../../binutils-2.22/libiberty/regex.c:8081:5: warning: incompatible implicit declaration of built-in function 'abort' [enabled by default]
../../binutils-2.22/libiberty/regex.c: In function 'xregfree':
../../binutils-2.22/libiberty/regex.c:8114:3: warning: incompatible implicit declaration of built-in function 'free' [enabled by default]
make[2]: *** [regex.o] Error 1
make[2]: Leaving directory `/sources/binutils-build/libiberty'
make[1]: *** [all-libiberty] Error 2
make[1]: Leaving directory `/sources/binutils-build'
make: *** [all] Error 2

Die vollständige Ausgabe ist hier und die Seite, die ich verwendet habe, ist hier

Kann mir jemand helfen?

BEARBEITEN:

/usr/include/stdlib.h (Zeile 470)

extern void *malloc (size_t __size) __THROW __attribute_malloc__ __wur;

binutils-2.22/libiberty/regex.c (Zeile 130)

char *malloc ();

Könnten Sie die Erklärungen von malloc in Dateien /usr/include/stdlib.h(Zeile 470) und binutils-2.22/libiberty/regex.c(Zeile 130)
Philippe Blayo

Mit welchen CFLAGS kompilieren Sie?
Mat

Die Standard. Ich habe nichts hinzugefügt
Ruben Roy

Und ich kompiliere auf Ubuntu 10.04 64bit
Ruben Roy

2
du solltest configurevorher rennen make. Ich habe auch gesehen, dass Sie nicht /usr/includein Zeile

Antworten:


2

Das Problem ist, dass STDC_HEADERS beim Kompilieren des Codes nicht definiert ist. Siehe Zeile 47 dieser Version von regex.c . Dies ist wahrscheinlich passiert, weil Sie nicht gelaufen sind configureoder es getan haben, aber etwas ist schief gelaufen.

Wenn Sie configure nicht ausgeführt haben, führen Sie es einfach aus:

./configure   

Wenn Sie es ausführen, sollte es eine Datei namens erzeugen , config.hdie verwendet werden soll #definedas Makro zu definieren , STDC_HEADERSbis zu einem gewissen Wert. Wenn nicht, fehlt möglicherweise dem von Ihnen verwendeten Compiler etwas, von dem er abhängt (z. B. Systemheaderdateien), oder er ist falsch konfiguriert oder falsch installiert.

Wie ich oben in einem Kommentar erwähnt habe, ist die Veröffentlichung der von Ihnen verwendeten Binutils jetzt über 4 Jahre alt und Sie sollten eine neuere Version verwenden, denke ich.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.