GNU/Linux >> Znalost Linux >  >> Linux

glibc:elf soubor OS ABI je neplatný

Problémem není verze vašeho jádra.

Zavaděč ve vašem systému nepodporuje nový Linux ABI. Až do relativně nedávné doby používaly binární soubory Linux ELF kód System V ABI. Nedávno, na podporu STT_GNU_IFUNC, Linux Bylo přidáno ABI. Budete muset aktualizovat svůj systém Knihovna C, aby měla zavaděč, který podporuje STT_GNU_IFUNC, a pak také rozpozná objekty ELF s Linux Typ ABI.

Podívejte se na příspěvek Dave Millera na blogu STT_GNU_IFUNC pro Sparc (archivováno), abyste porozuměli tomu, co STT_GNU_IFUNC dělá, pokud vás to zajímá.


Pokud se vám dostane do rukou zavaděč z novějšího systému, možná ho budete moci zprovoznit pomocí něj. Ale budete muset nosit nakladač kamkoli váš program půjde. Můžete buď zkompilovat svůj program pro použití tohoto zavaděče, jak je vysvětleno zde, nebo zkompilovat svůj program a opravit jej později pomocí patchelfu, způsobem podobným tomu, co zde uvádím. Podařilo se mi spustit program, který mi dával OS ABI invalid chyba na linuxu 2.6.18 (starším než váš), který měl ld-2.5.so, zkopírováním ld-2.15.so odjinud.

POZNÁMKA:NE přepište svůj systém ld*.so nebo ld-linux.;-/


Je možné, že váš glibc byl vytvořen pomocí --enable-multiarch příznak, který vynutil použití ifunc a nového LINUX ABI


Linux
  1. Základy oprávnění k souborům Linux

  2. Linux – všechno je soubor?

  3. Jak přejmenovat soubor v Linuxu?

  1. Jak přesunout soubor v Linuxu

  2. Vysvětlení oprávnění souborů v systému Linux

  3. Spuštění plochého binárního souboru pod Linuxem

  1. Linux Tail Command

  2. Linux Touch Command

  3. Cat Command v Linuxu