22 Stimmen

Valgrind akzeptiert nicht die neueste Version von glibc

Valgrind mag glibc 2.15 nicht:

Überprüfen der GLIBC_VERSION-Version... nicht unterstützte Version 2.15
configure: Fehler: Valgrind erfordert glibc-Version 2.2 - 2.14

Wie gehe ich damit um? Muss ich glibc downgraden? Ich arbeite auf Ubuntu 12.04, falls das relevante Informationen sind.

Update:

Also habe ich versucht, den Quellcode herunterzuladen und von dort aus zu installieren, anstatt apt-get zu verwenden, da ich Learn C the Hard Way durchgehe. Nachdem ich dieses Problem hatte, griff ich auf apt-get zurück, um zu sehen, ob es funktionieren würde. Es hat mir dieses Paket installiert:

libc6-dbg - Embedded GNU C Library: Detachierte Debugsymbole

18voto

Rumel Punkte 897

Ich gehe auch durch dieses Buch und stieß auf dieses Problem. Ich habe gegoogelt und bin hierher gekommen, nachdem ich dem Rat von Employeed Russian gefolgt bin und in die Konfigurationsdateien gegangen bin und es zum Laufen gebracht habe.

Gehen Sie in Ihre Konfiguration ungefähr bis Zeile 6404 und fügen Sie dann dies ein:

         2.15)
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: 2.15 family" >&5
$as_echo "2.15 family" >&6; }

$as_echo "#define GLIBC_2_14 1" >>confdefs.h

DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
;;

Dann habe ich configure, make und dann sudo make install ausgeführt und alles hat funktioniert.

In der Datei configure.in habe ich auch Code um Zeile 777 hinzugefügt, aber ich glaube nicht, dass es für das Endergebnis wichtig war. Falls doch, habe ich im Wesentlichen einfach den vorherigen Code, der sich auf 2.14 bezog, kopiert, eingefügt und alles auf 2.15 geändert.

Hoffe, das hilft

10voto

Filipe Gonçalves Punkte 20515

Aktualisierung für valgrind 3.9.0 und glibc 2.19:

Ich hatte das gleiche Problem und das Hinzufügen dieses Codes zum Konfigurationsskript, vor der Zeile mit darwin), hat es behoben:

     2.19)
    { $as_echo "$as_me:${as_lineno-$LINENO}: result: 2.19 family" >&5
$as_echo "2.19 family" >&6; }

$as_echo "#define GLIBC_2_19 1" >>confdefs.h

    DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
    DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
    DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
    ;;

Getestet auf KUbuntu 14.04

9voto

Employed Russian Punkte 180738

Wie kann ich damit umgehen?

Eine von zwei Möglichkeiten:

  1. Verwenden Sie Ihre Distribution und laden Sie das Paket herunter, das sie bereits für Sie erstellt haben, oder
  2. Finden Sie das Problem heraus (das darin besteht, dass configure nicht neu generiert wurde, nachdem 2.15 zu configure.in hinzugefügt wurde) und beheben Sie es.

Muss ich glibc downgraden?

Dadurch wird Ihr System wahrscheinlich nicht mehr bootfähig sein (da die meisten anderen Binärdateien von 2.15 abhängen).

3voto

A.T. Punkte 31

Aktualisiert für valgrind-3.8.1 (und das sollte auf jeder quasi aktuellen Linux-Box funktionieren - getestet auf Slackware 14.0):

Hinzugefügt eine "2.17" Option (ungefähr Zeile 6607) zwischen dem Ende von "2.16" und dem Beginn von "darwin" in der Datei "valgrind-3.8.1/configure".

Hat wunderbar funktioniert! Danke für die Hilfe, Leute!

Prost!

--at

2voto

RegarBoy Punkte 2718

Es scheint, dass immer wenn eine neue Version veröffentlicht wird, das Terminal nach verschiedenen Versionen von Glibc fragt. Wenn also das Terminal einen solchen Fehler gibt:

überprüfen der GLIBC_VERSION Version... nicht unterstützte Version 2.19
configure: Fehler: Valgrind erfordert glibc Version 2.2 - 2.14

Dann müssen Sie die configure-Datei für die Version 2.19 bearbeiten, da diese Version wie im Terminal gemeldet nicht unterstützt wird.

Öffnen Sie also in einem Texteditor - die Datei namens configure aus dem Valgrind-Verzeichnis, suchen Sie den folgenden Code über CTRL+F:

case "${GLIBC_VERSION}" in 2.2)

Wenn Sie diese Zeile im Editor erreichen (die Zeilennummer kann sich je nach Versionsnummer ändern), finden Sie den unten stehenden Codebeginn mit 2.2).

        2.2)
{ $as_echo "$as_me:${as_lineno-$LINENO}: Ergebnis: 2.15 Familie" >&5
$as_echo "2.15 Familie" >&6; }

$as_echo "#define GLIBC_2_14 1" >>confdefs.h

DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
;;

Und wenn Sie weiter nach unten scrollen, finden Sie denselben Code für jede andere Version von 2.2 bis 2.21.... Kopieren und fügen Sie den Code der letzten Version nach der letzten Version ein (beachten Sie, dass nur in meinem Fall die 2.2-Version beginnt und Sie alle 2.2)'s in die Version ändern müssen, die vom Terminal angefordert wird, was in meinem Fall 2.19) ist.

Also, wenn die Version 2.19 vom Terminal benötigt wird, wird der von Ihnen hinzugefügte Code wie folgt aussehen:

     2.19)
{ $as_echo "$as_me:${as_lineno-$LINENO}: Ergebnis: 2.19 Familie" >&5
$as_echo "2.19 Familie" >&6; }

$as_echo "#define GLIBC_2_19 1" >>confdefs.h

DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
;;

Und nach Ihrem Code sollten auf den nächsten Zeilen darwin) stehen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X