So leiten Sie den Standardpfad der Linker-Share-Bibliothek /lib64/libc.so.6 um, /lib64/libc.so.6: Version „GLIBC_2.14“ nicht gefunden

So leiten Sie den Standardpfad der Linker-Share-Bibliothek /lib64/libc.so.6 um, /lib64/libc.so.6: Version „GLIBC_2.14“ nicht gefunden

Meine Linux-Maschine ist x86_64-redhat-linux.

Ich verwende jedoch eine andere Arm-Toolchainaarch64-linux-gnu-gccauf dieser Maschine zum Erstellen (ich muss das, was ich baue, nicht auf dieser Maschine ausführen, sondern nur erstellen, daher sollte es gut sein, zum Erstellen die Arm-Toolchain zu verwenden)

Ich erhalte die folgende Fehlermeldung:

aarch64-linux-gnu-gcc: /lib64/libc.so.6: 
version `GLIBC_2.14' not found (required by aarch64-linux-gnu-gcc)

Der aktuelle Standardpfad der gemeinsam genutzten Bibliothek verweist auf /lib64/libc.so.6. Ich möchte ihn nicht aktualisieren, da ich nicht der einzige Benutzer dieser Maschine bin. Wie kann ich meine eigene libc.so.6 verwenden, kann ich den Suchpfad in ein anderes Verzeichnis umleiten?

Antwort1

Problem

GLIBC 2.12 ist installiert und wie der Titel des OP besagt, die Cross-Compile-Toolchain, die er zu verwenden versuchterfordertGLIBC > 2,14. Der OP gibt an, dass er auch eingeschränkt ist, weil er das System nicht aktualisieren kann.

Vorbehalte

Die folgende Liste in Schritt 3 wird zum Erstellen des Changeroots verwendet. Verwenden Sie nach Möglichkeit die Pakete aus den Repositories Ihrer Distribution. Wenn die neueste Version in Ihrem Repository mit der Version übereinstimmt, die außerhalb des Changeroots installiert wurde, beenden Sie Schritt 3 und verwenden Sie eine Online-Paketsuche, wieRPMFindum eine neuere Version zu finden und fortzufahren. Installieren Sie die neuere oder Online-Version nicht außerhalb des Changroots. Dies führt zu Systemausfällen, für die ich NICHT verantwortlich bin!

Lösung

Der OP muss nun eineChangeroot-Gefängnisum den ARM-Cross-Compiler zu installieren, da Versionen von GLIBC nicht nebeneinander installiert werden können. Siehe auchWikipedia - Chroot. Befolgen Sie hierzu bitte diese Schritte:

  1. Erstellen Sie das Verzeichnis für das Changeroot:mkdir -pv $HOME/newroot
  2. Erstellen Sie eine Übersteuerung, um die RPM-Pakete zur Installation in das Chroot umzuleiten: export ROOT=$HOME/newroot && echo $ROOT. Weitere Informationen finden Sie unter Schritt 4.
    • Bitte wiederholen Sie die neue Variable, da diese in Kürze sehr wichtig wird.
  3. Laden Sie die empfohlenen RPM-Pakete für das Changeroot herunter (Dies sind die Paketnamen):cd $ROOT && mkdir -v download && cd download
    • aufstellen
    • Dateisystem
    • Basissystem
    • ldconfig
    • glibc <--Beachten Sie den oben genannten Vorbehalt, sonst war die Arbeit für Sie umsonst.
    • mktemp
    • Begriffserklärung
    • Abonnieren
    • die Info
    • Dateihilfsprogramme
    • bash und libtermcap
    • gdbm
    • tcsh
    • perl
    • chkconfig
    • Textutils
    • cracklib
    • Cracklib-Wörterbücher
    • pwdb
    • oberflächlich
    • gaffen
    • pam --nodeps
    • Schatten-Dienstprogramme
    • Slang
    • util-linux --nodeps
    • sh-Dienstprogramme
    • zsh
    • sed
    • bzip2
    • popt
    • zlib
    • U/min
    • Ihre Crosscompile-Toolchain und ihre Abhängigkeiten
  4. Verwenden Sie den folgenden Befehl, um die obige Liste zu installieren . rpm -i --root=$ROOT packagenameBeachten Sie das --rootArgument. Dies überschreibt das Standardinstallationsverhalten des RPM. Beachten Sie die Pakete in der Liste mit Extras, z. B. bash && libtermcap. Führen Sie den Befehl rpm -i wie in der Liste angegeben aus, einschließlich des --rootArguments. Im obigen Beispiel wird libtermcap im selben Verzeichnis wie bash installiert.
  5. Schließlich kann man chroot $ROOT && export PS1="(chroot) $PS1"

Referenz

Die oben genannten Schritte wurden angepasst vonSo richten Sie eine Chroot-Umgebung mit RedHat Linux 6.2 ein - Für FTP und Webdienste

verwandte Informationen