3 votes

AC3D - Aucun fichier ou répertoire de ce type

Je viens de télécharger AC3D et d'extraire le zip dans un dossier de mon dossier personnel. J'ai ouvert un terminal, j'ai fait un CD dans le dossier et j'ai tapé ./ac3d . Mais je reçois à chaque fois le message d'erreur suivant :

bash: ./ac3d: No such file or directory

Mais le fichier est clairement là ! Je l'ai déjà rendu exécutable, donc cela ne peut pas être le cas non plus. Toute aide serait appréciée !

Merci d'avance !

Edit 1 : @TheSchwa Je l'ai fait. Et il apparaît, donc oui, il est reconnu.

@Nephente Voilà. Sortie de ls -l ac3d es:

-rwxrwxrwx 1 ruben ruben 3758400 mei  1 23:34 ac3d

Sortie de head -1 ac3d est (abrégé)

ELF@   4T94(444444o27o27@7|_h7h0h088HHH  Ptd\4\(\(PPQtd/lib/ld-linux.so.2GNU [...]

Edit 2 :

Sortie de dpkg --print-architecture : amd64

Sortie de dpkg --print-foreign-architectures : i386

3voto

Nephente Points 5045

Le problème est que le binaire est un exécutable 32 bits et que vous utilisez une Ubuntu 64 bits. Ce n'est pas un problème, car Ubuntu offre un support pour de multiples architectures.

En cas de doute sur la nature d'un exécutable, ou de tout fichier en général, la commande

file <filename>

offre des informations précieuses. Si la commande n'est pas disponible, elle peut être installée par l'intermédiaire de

sudo apt-get install file

Dans ce cas, il nous indique entre autres informations

ac3d: ELF 32-bit LSB executable[...]
interpreter /lib/ld-linux.so.2

L'interpréteur est le morceau de logiciel responsable du chargement de toutes les bibliothèques partagées dont un binaire a besoin pour fonctionner. S'il est absent, une application ne peut pas fonctionner.

Les exécutables 32 et 64 bits nécessitent des interpréteurs différents et des versions différentes des bibliothèques partagées. Heureusement, Ubuntu (ou plus précisément Debian) a introduit il y a quelque temps un support multi-architecture très sophistiqué. [cit. nécessaire]

Pour s'assurer que le système de paquets est préparé pour une autre architecture, on peut voir l'architecture par défaut du système avec

dpkg --print-architecture

Sur une Ubuntu 64 bits, la valeur par défaut est la suivante amd64 .

dpkg --print-foreign-architectures

affiche toutes les autres architectures que le système de paquets connaît. Pour le support 32bit, la sortie doit contenir i386 . Si ce n'est pas le cas, on peut ajouter un support avec

sudo dpkg --add-architecture i386

Il est nécessaire de mettre à jour la liste des paquets par la suite

sudo apt-get update

Les bibliothèques ou paquets nécessaires dans leur version i386 peuvent maintenant être installés avec

sudo apt-get install <package>:i386

Plus précisément, pour installer l'interpréteur nécessaire, l'installation de l'application GNU C Shared Library est indiqué :

sudo apt-get install libc6:i386

Dans la plupart des cas, le binaire en question s'exécutera, mais il existe bien sûr de nombreuses bibliothèques dont une application peut être liée dynamiquement, c'est-à-dire dont elle dépend. Celles-ci doivent être installées de la même manière. Si une bibliothèque est manquante, l'éditeur de liens donnera une erreur à l'exécution.

./ac3d: error while loading shared libraries: libGLU.so.1: \
cannot open shared object file: No such file or directory

A ce stade, il faut trouver quel paquet contient ce fichier manquant. Si le paquet correspondant à l'architecture native est déjà installé, on peut rechercher un fichier de type dpkg

dpkg -S libGLU.so.1
libglu1-mesa:amd64: /usr/lib/x86_64-linux-gnu/libGLU.so.1

Nous devrions donc installer libglu1-mesa:i386 . Répétez l'opération jusqu'à ce que toutes les dépendances soient satisfaites.

Mais souvent, une bibliothèque est complètement absente du système. Dans ce cas, on peut soit chercher Le paquetage en ligne d'Ubuntu ou installez l'utilitaire apt-file et faire

apt-file search <filename> 

Un très bon HOWTO sur le support multi-arch sur Debian (même chose pour Ubuntu) peut être trouvé aquí .

Extra : Le paquet binutils contient des outils très pratiques pour examiner les binaires. En particulier, il contient le ldd (Liste des dépendances dynamiques) util. Il liste toutes les bibliothèques dynamiques dont un binaire a besoin pour fonctionner.

Ejemplo:

ldd ac3d

produit

linux-gate.so.1 (0xf77b7000)
libfreetype.so.6 => /usr/lib/i386-linux-gnu/libfreetype.so.6 (0xf76ee000)
libGLU.so.1 => not found
libGL.so.1 => not found
libpng12.so.0 => /lib/i386-linux-gnu/libpng12.so.0 (0xf76c0000)
libXmu.so.6 => not found
libXext.so.6 => not found
libX11.so.6 => not found
libdl.so.2 => /lib/i386-linux-gnu/i686/cmov/libdl.so.2 (0xf76ba000)
libpthread.so.0 => /lib/i386-linux-gnu/i686/cmov/libpthread.so.0 (0xf769e000)
libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0xf75ac000)
libm.so.6 => /lib/i386-linux-gnu/i686/cmov/libm.so.6 (0xf7566000)
libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xf7549000)
libc.so.6 => /lib/i386-linux-gnu/i686/cmov/libc.so.6 (0xf739e000)
libz.so.1 => /lib/i386-linux-gnu/libz.so.1 (0xf7381000)
/lib/ld-linux.so.2 (0xf77ba000)

De cette façon, on peut savoir rapidement quelles sont les bibliothèques qui manquent dans le système.

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