我正在尝试制作一个C ++程序,它将找到迷宫中最短的路线。我现在正努力让我的makefile正常工作。目前,我的makefile包含以下内容:
mazeIO : mazeIO.cpp maze.h
g++ -g -Wall mazeIO.cpp maze.h -o mazeIO
mazeIO.cpp和maze.h是我在项目中唯一拥有的两个文件。在命令行中我输入
make -f Makefile
它编译得很好。然后我正在打字
./mazeIO maze.txt
maze.txt是我试图导航的迷宫输入。 在我输入后,我收到以下错误:
bash: ./mazeIO: Permission denied
我不明白为什么。有什么建议吗?
答案 0 :(得分:2)
由于存在执行(x
)标志,可执行文件在Linux中称为可执行文件。您的“可执行文件”没有它 - 它只具有读取(r
)和写入(w
)权限。您可以从可执行文件中删除权限(例如,使用chmod 600 mazeIO
),或者您的umask很奇怪。 umask控制新文件的默认用户权限,如果您从默认文件修改它,它可能会造成严重破坏。对于大多数系统,默认的umask是0022
,我建议将它留在那里,除非你知道会发生什么。我没有任何其他想法为什么你可能会错过exec位。
答案 1 :(得分:2)
这很简单。它需要可执行权限。
chmod + x mazeIO
如果需要由其他用户执行,您也可以使用chmod 如果需要由其他用户执行,那么chmod将为您提供所需的数值。警惕提供完整的可执行,读取和写入权限(chmod 777)
chmod 600不会使其可执行。