GNU/Linux >> Znalost Linux >  >> Linux

Jak mohu vyřešit chybu nelze spustit binární soubor?

Obvykle tato chybová zpráva znamená, že Linux nerozpozná soubor jako skript shellu nebo jako spustitelný soubor.

Příčinou je obvykle spuštění spustitelného souboru na nesprávné architektuře – pokud se pokusíte spustit spustitelné soubory x86 na CPU ARM, objeví se tato zpráva.

Udělal /usr/bin/id přepsat, možná?


Zkuste jej spustit pomocí ./executablefilename namísto použití sh executablefilename. Koneckonců to není shell skript.


Problémem je spuštění binárního souboru pro jinou architekturu procesoru. Ke kontrole architektury binárních souborů můžete použít objdump (z binutils). Ke kontrole architektury počítače můžete použít uname.

např. Na tuto chybu „nelze spustit binární soubor“ jsem narazil při instalaci FF.Communicator – pluginu firefox pro Chrome (takže mohu spouštět stránky, které používají java applety).

  • objdump ukazuje, že binární soubor je 64bitový elf64-x86-64
  • uname ukazuje, že můj počítač je 32bitový i686

    $ ./FF.Communicatorbash:./FF.Communicator:nelze spustit binární soubor$ uname -mpioi686 i686 i386 GNU/Linux$ objdump -a ./FF.Communicator./FF.Communicator:formát souboru elf64-x86-64./ FF.Communicator

  • objdump na pracovním binárním souboru na mém počítači je 32bitový elf32-i386

    $ objdump -a /bin/ls/bin/ls:formát souboru elf32-i386

Pomocí těchto nástrojů můžete zkontrolovat architektury strojů a binárních souborů – nejen architektury Intel, ale jakéhokoli procesoru.

Uživatelé Mac OSX mohou zjistit informace o architektuře konkrétního souboru pomocí příkazu "file":

$ file filename_here

Linux
  1. Jak se mohu ujistit, že můj systém používá soubor ~/.screenrc?

  2. Jak mohu najít nejstarší soubor ve stromu adresářů

  3. Získání chyby:bash:./program:nelze spustit binární soubor:Chyba formátu Exec

  1. Jak mohu zkontrolovat, zda soubor existuje, a provést příkaz, pokud ne?

  2. Jak mohu smazat nový řádek, pokud je to poslední znak v souboru?

  3. Jak mohu symbolicky propojit soubor v Linuxu?

  1. pomocí linuxu, jak mohu předat obsah souboru jako parametr spustitelnému souboru?

  2. Jak mohu spustit kód PHP z příkazového řádku?

  3. Jak mohu přidat řetězec na začátek každého řádku v souboru?