GNU/Linux >> LINUX-Kenntnisse >  >> Linux

glibc:Elf-Datei OS ABI ungültig

Es ist nicht Ihre Kernel-Version, die das Problem ist.

Der Loader auf Ihrem System unterstützt den neuen Linux nicht ABI. Bis vor relativ kurzer Zeit verwendeten Linux ELF-Binärdateien den System V ABI. Kürzlich wurde zur Unterstützung von STT_GNU_IFUNC der Linux ABI wurde hinzugefügt. Sie müssten Ihr System aktualisieren C-Bibliothek, einen Loader zu haben, der STT_GNU_IFUNC unterstützt, und dann erkennt er auch ELF-Objekte mit dem Linux ABI-Typ.

Sehen Sie sich den Blog-Eintrag von Dave Miller zu STT_GNU_IFUNC für Sparc (archiviert) an, um zu verstehen, was STT_GNU_IFUNC tut, falls es Sie interessiert.


Wenn Sie den Loader von einem neueren System in die Hände bekommen, können Sie ihn möglicherweise damit zum Laufen bringen. Aber Sie müssen den Loader überall hin mitnehmen, wo Ihr Programm hingeht. Sie können entweder Ihr Programm kompilieren, um diesen Loader wie hier erklärt zu verwenden, oder Ihr Programm kompilieren und es später mit Patchelf patchen, ähnlich wie ich es hier erwähne. Ich konnte ein Programm ausführen, das mir den OS ABI invalid gab Fehler auf einem Linux 2.6.18 (älter als Ihres), das ld-2.5.so hatte, durch Kopieren einer ld-2.15.so von woanders.

HINWEIS:NICHT Überschreiben Sie Ihr System ld*.so oder ld-linux.;-/


Es ist möglich, dass Ihre glibc mit dem --enable-multiarch erstellt wurde Flag, das die Verwendung von ifunc und neuem LINUX ABI erzwang


Linux
  1. So verschieben Sie eine Datei unter Linux

  2. Grundlagen der Linux-Dateiberechtigungen

  3. Linux – Alles ist eine Datei?

  4. Wie benenne ich eine Datei unter Linux um?

  5. Ausführen einer flachen Binärdatei unter Linux

Gunzip-Befehl unter Linux

Stat-Befehl unter Linux

Was ist umask unter Linux?

So verknüpfen Sie eine Datei unter Linux per Symlink

Extrahieren Sie die tar.gz-Datei unter Linux

Was ist eine .bashrc-Datei unter Linux?