141 votes

bash : ./programme : impossible d'exécuter le fichier binaire : Erreur de format d'exécution

J'essaie d'exécuter un programme, mais il donne une erreur :

bash: ./program: cannot execute binary file: Exec format error

Le résultat de file program était :

program: ELF-32-bit LSB executable, ARM, EABI4 version 1 (SYSV), dynamically linked (uses share libs), for GNU/LINUX 2.6.16, not stripped

Comment puis-je réparer cela ?

J'utilise Ubuntu 14.04.2 (amd64) avec VMware. J'ai également essayé d'utiliser Ubuntu i386, mais le résultat est le même.

134voto

ieplugin Points 216

Vous essayez d'exécuter un exécutable compilé pour une architecture ARM sur une architecture x86-64, ce qui revient à demander à votre processeur qui ne parle qu'anglais de suivre des instructions en chinois.

Si vous devez exécuter cet exécutable, vous avez deux possibilités :

  1. Obtenez une version x86-64 de l'exécutable (par n'importe quel moyen ; si vous ne pouvez pas obtenir une version x86-64 de l'exécutable mais que vous pouvez obtenir son code source, vous pouvez essayer de le recompiler sur la machine virtuelle) ;

  2. Installer Ubuntu Server pour ARM à la place d'Ubuntu 14.04.2 (amd64). Cela nécessite soit une machine physique fonctionnant sur une architecture ARM, soit un logiciel de virtualisation capable de l'émuler.

25voto

Hughie Coles Points 351

Cela peut également se produire si vous tentez d'exécuter un exécutable x86-64 sur une plate-forme 32 bits.

Dans un cas précis, j'ai téléchargé Visual Studio Code et j'ai essayé de l'exécuter sur mon installation Ubuntu, mais je n'avais pas réalisé que j'avais installé Ubuntu 32 bits dans cette VM. J'ai obtenu cette erreur, mais après avoir téléchargé la version 32 bits, le programme s'est exécuté sans problème.

13voto

Jon Galloway Points 28243

Il est souvent possible d'exécuter une image exécutable ARM sur un système amd64 si vous installez le programme binfmt-support Install binfmt-support , qemu Install qemu et qemu-user-static Install qemu-user-static paquets :

sudo apt install binfmt-support qemu qemu-user-static

qemu effectuera alors une émulation de syscall lorsque vous exécuterez l'exécutable. Cela fonctionne pour la plupart des binaires ARM mais il y en a quelques-uns qui peuvent ne pas s'exécuter correctement.

10voto

Pavel Points 313

Une telle erreur peut se produire si toutes les conditions suivantes sont réunies :

  • L'exécutable n'est pas un fichier mais un lien
  • Vous l'exécutez dans une VM
  • Le fichier est situé dans un dossier partagé
  • Votre hôte est Windows.

Si vous avez obtenu ce fichier, disons, dans une archive - essayez de le décompresser dans la VM, dans un répertoire du lecteur virtuel, et non dans un dossier mappé sur le disque dur de votre machine hôte, par exemple /myNewDir/

3voto

lambzee Points 31

Si plus d'un java est installé sur le système, cela peut arriver et ne pas être défini par défaut. Sur Ubuntu14.04 LTS, j'ai pu résoudre le problème en exécutant ce qui suit et en choisissant l'option java J'en avais besoin.

sudo update-alternatives --config java
[sudo] password for user: 
update-alternatives: warning: /etc/alternatives/java has been changed (manually or by a script); switching to manual updates only
There are 2 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                            Priority   Status
------------------------------------------------------------
  0            /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java   1071      auto mode
  1            /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java   1071      manual mode
  2            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java   1069      manual mode

Press enter to keep the current choice[*], or type selection number: 2
update-alternatives: using /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java to provide /usr/bin/java (java) in manual mode

Je choisis 2 et je mets openjdk-8 par défaut. Qui n'a pas montré le Exec format error .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X