2012-06-12 21:26:53 +0000 2012-06-12 21:26:53 +0000
88
88
Advertisement

Comment puis-je résoudre l'erreur "cannot execute binary file" ?

Advertisement

Lorsque je me connecte en SSH, tout ce que je peux voir est ceci…

-bash: /usr/bin/id: cannot execute binary file
-bash: [: : integer expression expected

Je n'ai rien pu faire ici. Les commandes telles que halt, poweroff, reboot retourneront command not found.

Comment puis-je résoudre ce problème ? J'utilise Debian Squeeze Linux

Advertisement

Réponses (7)

92
92
92
2012-06-13 03:07:20 +0000

Ce message d'erreur signifie généralement que Linux ne reconnaît pas le fichier comme un script shell ou comme un fichier exécutable.

En général, la cause est l'exécution d'un exécutable sur la mauvaise architecture - si vous essayez d'exécuter des exécutables x86 sur un processeur ARM, ce message apparaît.

Est-ce que /usr/bin/id a été écrasé, éventuellement ?

26
26
26
2012-06-13 01:27:14 +0000

Essayez de l'exécuter en utilisant ./executablefilename au lieu de sh executablefilename. Ce n'est pas un script shell après tout.

9
Advertisement
9
9
2015-06-19 11:55:00 +0000

Le problème est d'exécuter un binaire pour une architecture de processeur différente. Vous pouvez utiliser objdump (à partir de binutils) pour vérifier l'architecture des binaires. Vous pouvez utiliser uname pour vérifier l'architecture d'une machine.

par exemple j'ai rencontré cette erreur “cannot execute binary file” lors de l'installation de FF.Communicator - un plugin firefox pour chrome (donc je peux exécuter des pages qui utilisent des applets java).

  • objdump montre que le binaire est en 64 bits elf64-x86-64
  • uname montre que ma machine est en 32 bits i686

  • objdump sur un binaire qui fonctionne sur ma machine montre qu'il est en 32 bits elf32-i386

En utilisant ces outils, vous pouvez vérifier les architectures des machines et des binaires - pas seulement les architectures intel mais tout processeur.

Pour les utilisateurs de Mac OSX, vous pouvez trouver les informations sur l'architecture d'un fichier spécifique en utilisant la commande “file” :

$ file filename_here
6
6
6
2012-06-12 21:51:34 +0000

Je fais quelques suppositions sauvages ici, mais il semble que ce qui suit se passe :

  1. Vous vous connectez via SSH, déclenchant bash pour exécuter votre ~/.profile ou ~/.bashrc pour configurer votre environnement pour vous (c'est normal).
  2. A un moment donné, il essaie d'exécuter /bin/id pour obtenir votre uid, ce qui échoue, provoquant une erreur d'expression d'entier, et terminant le script avant qu'il ne puisse configurer votre $PATH.
  3. Parce que votre $PATH n'est pas configuré, bash ne peut exécuter que les commandes avec le chemin complet spécifié.

Utilisez export PATH=/bin:/usr/bin:/sbin:/usr/sbin pour corriger le problème de $PATH jusqu'à ce que vous puissiez corriger la cause principale de l'échec de /bin/id.

0
Advertisement
0
0
2018-10-24 14:01:42 +0000

Cela signifie que vous essayez d'exécuter un fichier binaire en utilisant votre script bash qui n'est pas destiné à être exécuté comme vous l'essayez. Il s'agit déjà d'un fichier binaire et vous essayez d'analyser et d'exécuter votre $SHELL.

dans un exemple très simple, si vous essayez d'exécuter la commande “w” comme

$ bash w
/usr/bin/w: /usr/bin/w: cannot execute binary file

de la même manière, vous risquez d'utiliser la même méthode ou ce qu'elle semble être à partir de votre extrait de code. 002 Alors que pour le reste de vos commandes, toutes ces commandes d'arrêt, d'arrêt, de redémarrage, etc. sont des commandes appartenant à l'utilisateur root et nécessitent des privilèges super-utilisateur pour être exécutées et effectuer l'opération requise. Les utilisateurs normaux ne peuvent pas les exécuter.

0
0
0
2012-06-12 22:29:57 +0000

Le fichier binaire est constitué d'instructions machine que le processeur peut comprendre. Votre système d'exploitation ne signifie pas que le même exécutable fonctionnera. Faire des allers-retours entre le jeu d'instructions du processeur compatible avec fonctionnera généralement bien, si elles ne le sont pas, le processeur ne pourra pas comprendre les instructions.

-1
Advertisement
-1
-1
2018-07-25 08:43:45 +0000

Vous utilisez une mauvaise version de l'installateur, par exemple, une machine 64 bits et vous essayez d'installer une version 32 bits de l'installateur.

Advertisement