makefile permission denied
Je suis en train de faire un programme en C++ qui vous permettra de trouver le plus court chemin pour sortir du labyrinthe. J'ai du mal à obtenir mon makefile pour travailler l'instant. Actuellement, mon makefile contient les éléments suivants:
mazeIO : mazeIO.cpp maze.h
g++ -g -Wall mazeIO.cpp maze.h -o mazeIO
mazeIO.cpp et labyrinthe.h sont les deux seuls fichiers que j'ai dans le projet. Dans la ligne de commande je suis en tapant
make -f Makefile
et il compile bien. Puis je me suis tapé
./mazeIO maze.txt
maze.txt est le labyrinthe d'entrée que je suis en train de naviguer.
Après je tape ceci dans j'obtiens l'erreur suivante:
bash: ./mazeIO: Permission denied
Je ne comprends pas pourquoi. Des suggestions?
- Ce n'
ls -l mazeIO
spectacle? - Vous n'avez pas besoin de liste
maze.h
dans la ligne de compilation. Il ressemble àg++
doit l'ignorer; vous avez de la chance. - ls-l mazeIO montre -rw------- 1 et puis le répertoire que je suis dans
- Votre umask semble cassé, est ma conjecture.
chmod 700 mazeIO
pour les premiers secours. Ce n'umask
impression?
InformationsquelleAutor user1795370 | 2012-11-28
Vous devez vous connecter pour publier un commentaire.
Les fichiers exécutables sont connus comme des exécutables sous Linux en raison de la présence de l'exécuter (
x
) drapeau. Votre "exécutable" ne l'a pas - il n'a le lire (r
) et write (w
) des autorisations. Soit vous bande de l'autorisation de l'exécutable (par exemple, à l'aide dechmod 600 mazeIO
), ou votre umask est bizarre. umask les contrôles de l'utilisateur par défaut des autorisations sur les nouveaux fichiers, et si vous avez modifié le nom par défaut, il pourrait faire des ravages. L'umask par défaut est0022
pour la plupart des systèmes, je suggère qu'elle soit de gauche, à moins que vous savez ce qui va arriver. Je n'ai pas d'autre idée, pourquoi vous pourriez être manquant exec peu.C'est simple. Il a besoin de l'exécutable droits.
chmod +x mazeIO
Vous pouvez également utiliser la commande chmod si elle doit être exécutée par d'autres utilisateurs.
man chmod va vous donner les valeurs numériques nécessaires si elle doit être exécutée par d'autres utilisateurs. Méfiez-vous de donner plein exécutable, de lecture et d'écriture (chmod 777)
chmod 600 ne sera pas de le rendre exécutable.