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