Bash dit que le fichier n'existe pas, mais il le fait

J'essaie de compiler le microprogramme pour mes linksys WRVS4400N.

ls montre qu'il existe mais quand il tente de l'exécuter bash dit qu'il n'existe pas. Je peux aussi le cat , et c'est un exécutable, pas un script shell.

Vous avez mentionné que la sortie du file mkdep est 32-bit elf . Vous utilisez une machine virtuelle 64 bits.

Exemple:

 $ uname -m x86_64 $ ls -l ./example -rwxr-xr-x 1 root root 92312 2011-08-18 16:52 ./example $ file ./example example: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, stripped $ ./example -bash: ./example: No such file or directory 

Il suffit de créer une nouvelle VM 32-bit et de la compiler là-bas.

Est-il configuré pour être exécutable? Sinon, puis chmod +x filename . Est-ce dans votre PATH? Sinon, appelez-le comme ./filename plutôt que comme filename .

Lorsque vous essayez d'exécuter un fichier et que bash indique qu'il n'existe pas, cela signifie parfois que bash croit que le fichier est un script et que l'interprète spécifié dans la première ligne (#!) N'existe pas.

Si les fichiers s'appellent mkdep je mkdep la sortie de

 ./mkdep file mkdep hd mkdep | head strace ./mkdep 2>mkdep.strace.txt 

La commande Strace donne des informations sur les appels système effectués, par exemple strace ls 2>ls.t met le suivant dans ls.t

 Execve ("/ bin / ls", ["ls"], [/ * 22 vars * /]) = 0
 Brk (0) = 0x8061000
 Accès ("/ etc / ld.so.nohwcap", F_OK) = -1 ENOENT (aucun fichier ou répertoire)
 Mmap2 (NULL, 8192, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0) = 0xb7f82000
 Accès ("/ etc / ld.so.preload", R_OK) = -1 ENOENT (Aucun fichier ou répertoire de ce type)
 Ouvert ("/ etc / ld.so.cache", O_RDONLY) = 3
 Fstat64 (3, {st_mode = S_IFREG | 0644, st_size = 32311, ...}) = 0
 Mmap2 (NULL, 32311, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f7a000
 Fermer (3) = 0
 Accès ("/ etc / ld.so.nohwcap", F_OK) = -1 ENOENT (aucun fichier ou répertoire)
 Ouvert ("/ lib / librt.so.1", O_RDONLY) = 3
 Lire (3, "\ 177ELF \ 1 \ 1 \ 1 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 3 \ 0 \ 3 \ 0 \ 1 \ 0 \ 0 \ 0 \ 240 \ 30 \ 0 \ 0004 \ 0 \ 0 \ 0 "..., 512) = 512
 Fstat64 (3, {st_mode = S_IFREG | 0644, st_size = 30624, ...}) = 0

Changez-vous IFS dans votre script? J'ai également rencontré le même problème dans l'un de mes scripts et pensé le même (fichier 32 bits lue par script shell sur 64 bits). Mais ce n'était pas le problème dans mon cas. Au lieu de cela, je changeais IFS en virgule ', et revenir à une nouvelle ligne qui a quelque peu confondu l'analyseur et provoqué cette erreur.

Je viens de supprimer tout changement dans IFS et ça marche bien maintenant !!!