J'essaie de compiler le firmware de mon linksys WRVS4400N.
ls
montre qu'il existe mais quand il essaie de l'exécuter, bash dit qu'il n'existe pas. Je peux aussi le cat
faire, et c'est un exécutable, pas un script shell.
bash
arch-linux
Avery3R
la source
la source
Réponses:
Vous avez mentionné que la sortie de
file mkdep
est32-bit elf
. Vous exécutez une machine virtuelle 64 bits.Exemple:
Créez simplement une nouvelle machine virtuelle 32 bits et compilez-la.
la source
Est-il configuré pour être exécutable? Sinon, alors
chmod +x filename
. Est-ce dans votre CHEMIN? Sinon, appelez-le./filename
plutôt que justefilename
.la source
Lorsque vous essayez d'exécuter un fichier et que bash dit qu'il n'existe pas, cela signifie parfois que bash pense que le fichier est un script et que l'interpréteur spécifié dans la première ligne (#!) N'existe pas.
Si les fichiers sont nommés,
mkdep
je publierais la sortie deLa commande strace donne des informations sur les appels système effectués, par exemple
strace ls 2>ls.t
met les éléments suivants dans ls.tla source
strace ./mkdep 2>mkdep.strace.txt
ceci devrait vous donner une idée de ce qui se passe. Vous devrez peut-être installer strace à partir des référentiels.Modifiez-vous IFS dans votre script? Moi aussi, j'ai rencontré le même problème dans l'un de mes scripts et j'ai pensé la même chose (fichier 32 bits lu par script shell sur une machine 64 bits). Mais ce n'était pas le problème dans mon cas. Au lieu de cela, je remplaçais IFS par une virgule '' et reviens à une nouvelle ligne qui a en quelque sorte confondu l'analyseur et provoqué cette erreur.
Je viens de supprimer tout changement dans IFS et cela fonctionne très bien maintenant !!!
la source