J'ai téléchargé un jeu (Shank) mais le fichier bin ne s'exécute pas. L'erreur affichée lorsque j'essaie de lancer l'exécutable est la suivante:
bash: ./shank-linux-120720110-1-bin: No such file or directory
64-bit
files
games
executable
Francesco
la source
la source
Réponses:
Vous essayez probablement d'exécuter un binaire 32 bits sur un système 64 bits sur lequel le support 32 bits n'est pas installé.
Vous pouvez obtenir le message «Aucun fichier ou répertoire de ce type» dans trois cas:
file shank-linux-120720110-1-bin
affiche quelque chose comme «Exécutable ELB 32 bits ELF…»). Pourtant, lorsque vous essayez de l'exécuter, on vous dit que le fichier n'existe pas.Le message d'erreur dans ce dernier cas est certes déroutant. Cela vous dit qu'il manque un composant clé de l'environnement d'exécution nécessaire à l'exécution du programme. Malheureusement, le canal par lequel l'erreur est signalée n'a de la place que pour le code d'erreur et non pour ces informations supplémentaires, à savoir que c'est vraiment l'environnement d'exécution qui est à blâmer. Si vous souhaitez connaître la version technique de cette explication, lisez le message Obtention du message «Introuvable» lors de l’exécution d’un fichier binaire 32 bits sur un système 64 bits .
La
file
commande vous dira ce qu'est ce binaire. À quelques exceptions près, vous ne pouvez exécuter qu'un binaire pour l'architecture de processeur à laquelle votre version d'Ubuntu est destinée. La principale exception est que vous pouvez exécuter des fichiers binaires 32 bits (x86, IA32) sur des systèmes 64 bits (amd64, x86_64).Dans Ubuntu jusqu’à la version 11.04, pour exécuter un fichier binaire 32 bits sur une installation 64 bits, vous devez installer le
ia32-libs
paquet . Vous devrez peut-être installer des bibliothèques supplémentaires (vous obtiendrez un message d'erreur explicite si vous le faites).Depuis 11.10 (oneiric) introduit le support multiarch , vous pouvez toujours installer
ia32-libs
, mais vous pouvez choisir une approche plus fine, c'est suffisant pour obtenir (plus toute autre bibliothèque nécessaire).libc6-i386
la source
ldd
pour vérifier s'il vous manque une bibliothèque.ldd kgio_ext.so
pourrait dire quelque chose commelibruby.so.2.3 => not found
entre autresbash: ...some...path...: No such file or directory
peut apparaître: après avoir déplacé le fichier exécutable. Bash semble mettre en cache les chemins des exécutables trouvés dans $ PATH; courirhash -r
pour le nettoyer. Voir: unix.stackexchange.com/a/5610/11352Systèmes Multiarch Ubuntu 64 bits
Suivez cette réponse uniquement si la sortie de
file file-name
shows,Pour exécuter le fichier exécutable 32 bits dans un système Ubuntu multiarchitecture 64 bits, vous devez ajouter l'
i386
architecture et aussi vous devez installerlibc6:i386
,libncurses5:i386
,libstdc++6:i386
ces trois paquets de bibliothèque.la source
libselinux1:i386
En installant le deb pour 32 bits, j'ai réalisé qu'il me manquait des bibliothèques (en plus de ia32-libs et de libc6). J'ai d'abord résolu ce problème en donnant cette commande:
Puis j'ai eu une autre erreur:
Évidemment, ces bibliothèques ont été correctement installées. Sans entrer dans les détails, je devais relier les bibliothèques à la main. J'ai alors réalisé que Synaptic pourrait également installer une solution plus simple:
Après cela, le problème suivant était l'écran noir pendant la lecture, que j'ai résolu en remplaçant l'exécutable dans / Shank / bin par ceci: http://treefort.icculus.org/smb/smb-linux-mesa-hotfix-test.tar .bz2 .
J'espère que cela sera utile à quelqu'un. Si vous avez besoin de plus d'aide ou de plus de détails, n'hésitez pas à me contacter.
la source
Voici une transcription montrant un peu plus sur la nature du problème et comment le résoudre à partir de Ubuntu 16.04. Notez que même si les
file
rapports "liés dynamiquement", lesldd
rapports "ne sont pas un exécutable dynamique".Une fois que vous avez installé libc6: i386, les choses commencent à s’améliorer ...
Pour terminer le travail, vous devrez peut-être identifier et installer des bibliothèques supplémentaires, une à la fois ...
Je ne sais pas s'il existe un moyen systématique d'identifier les bonnes bibliothèques à installer. Il y a un peu de approximation qui mappe les messages d'erreur aux noms de paquet (la complétion par un onglet aide).
la source
ldd
(incorrectement) indique "pas un exécutable dynamique".Pour développer la réponse @Gilles, il existe au moins trois scénarios entraînant cette erreur:
file
commande fonctionne), créant ainsi un message d'erreur déroutant. Cela peut signifier qu'il y a un problème avec le chargeur.Catégories de problèmes de chargeur:
Le chargeur d'un exécutable n'existe pas. Vous pouvez vérifier cela en utilisant la commande file et voir si le chargeur existe. Par exemple
Avis
interpreter /lib64/ld-lsb-x86-64.so.3
; si ce fichier n'existe pas, vous devez l'installer. Pour ce chargeur en particulier sur 16.04, la réponse s'est avérée êtresudo apt-get install lsb
.Problèmes avec le chargeur d'un script (voir cette réponse ).
ldd <file-name>
"non trouvées". Voir cette réponse pour plus d'informations.Le chargeur inexistant pourrait être dû à une non-concordance de 32/64 bits ou à une autre raison. Il y a peut-être d'autres types d'erreurs de chargement que je ne connais pas.
la source
file lmutil
n'ai pas montré l'interprète, mais je l' aildd
fait, et l'installation alsb
résolu le problème.