4

我正在尝试制作一个 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

我不懂为什么。有什么建议么?

4

2 回答 2

5

这很简单。它需要可执行权限。

chmod +x mazeIO

如果需要由其他用户执行,您也可以使用 chmod。
如果需要由其他用户执行, man chmod 将为您提供所需的数值。谨慎授予完整的可执行、读取和写入权限 (chmod 777)

chmod 600 不会使其可执行。

于 2013-09-04T15:10:04.967 回答
2

x由于存在 execute ( ) 标志,可执行文件在 Linux 中被称为可执行文件。您的“可执行文件”没有它 - 它只有读取 ( r) 和写入 ( w) 权限。要么您从可执行文件中删除权限(例如,使用chmod 600 mazeIO),要么您的 umask 很奇怪。umask 控制新文件的默认用户权限,如果您从默认值修改它,它可能会造成严重破坏。默认 umask 适用0022于大多数系统,我建议将其保留在那里,除非您知道会发生什么。我不知道为什么您可能会丢失 exec 位。

于 2012-11-28T02:37:09.057 回答