it-swarm.com.de

glibc: elf-datei OS ABI ungültig

heruntergeladen und kompiliert glibc-2.13. Wenn ich versuche, ein Beispiel-C-Programm auszuführen, das ein Malloc () ausführt. Ich erhalte folgende Fehlermeldung elf file OS ABI invalid

Kann jemand bitte meinen Zeiger weitergeben, der bei der Lösung dieses Problems hilfreich ist

20
Kapil

Das Problem liegt nicht in Ihrer Kernel-Version.

Der Loader in Ihrem System unterstützt nicht die neue Linux-ABI. Bis vor kurzem verwendeten Linux ELF-Binärdateien das System V-ABI. Zur Unterstützung von STT_GNU_IFUNC wurde kürzlich die Linux-ABI hinzugefügt. Sie müssten Ihre system C-Bibliothek aktualisieren, um über einen Loader zu verfügen, der STT_GNU_IFUNC unterstützt, und dann werden auch ELF-Objekte mit dem ABI-Typ Linux erkannt.

Siehe Dave Millers Blogeintrag auf STT_GNU_IFUNC für Sparc , um zu verstehen, was STT_GNU_IFUNC macht, wenn Sie sich dafür interessieren.

31
mkj

Möglicherweise wurde Ihre glibc mit dem Flag --enable-multiarch erstellt, das die Verwendung von ifunc und der neuen LINUX ABI erzwingt

2
cyberzx

Was ich sagen kann, ist, dass --enable-multiarch die Standardeinstellung ist und Sie dies durch Einstellung von --enable-multiarch=no deaktivieren sollten.

1
Oliver R.

Wenn Sie Ihre Hände von einem neueren System aus in den Loader bekommen, können Sie dies möglicherweise zum Laufen bringen. Sie müssen den Loader jedoch überallhin mitnehmen, wohin Ihr Programm geht. Sie können Ihr Programm entweder so kompilieren, dass es den Loader verwendet, wie erklärt here , oder Ihr Programm kompilieren und später mit patchelf patchen, ähnlich wie ich es mit hier erwähne. Ich konnte ein Programm ausführen, das mir den OS ABI invalid-Fehler auf einem Linux 2.6.18 (älter als Ihrer) mit ld-2.5.so gab, indem ich eine ld-2.15.so von irgendwo anders kopierte.

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

1
msb