makefile权限被拒绝 我试图制作一个C++程序,它能找到最短路径。我现在正努力让我的makefile工作。当前,我的makefile包含以下内容: mazeIO : mazeIO.cpp maze.h g++ -g -Wall mazeIO.cpp maze.h -o mazeIO

makefile权限被拒绝 我试图制作一个C++程序,它能找到最短路径。我现在正努力让我的makefile工作。当前,我的makefile包含以下内容: mazeIO : mazeIO.cpp maze.h g++ -g -Wall mazeIO.cpp maze.h -o mazeIO,makefile,permission-denied,Makefile,Permission Denied,mazeIO.cpp和maze.h是我在项目中仅有的两个文件。我正在命令行中键入 make -f Makefile 它编译得很好。然后我在打字 ./mazeIO maze.txt maze.txt是我尝试导航的迷宫输入。 在键入此项后,我会出现以下错误: bash: ./mazeIO: Permission denied 我不明白为什么。有什么建议吗?由于存在execute(x)标志,可执行文件在Linux中称为可执行文件。您的“可执行文件”没有它-它只有读取(r)和写入(w)权限。或者您

mazeIO.cpp和maze.h是我在项目中仅有的两个文件。我正在命令行中键入

make -f Makefile
它编译得很好。然后我在打字

./mazeIO maze.txt
maze.txt是我尝试导航的迷宫输入。 在键入此项后,我会出现以下错误:

bash: ./mazeIO: Permission denied

我不明白为什么。有什么建议吗?

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

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

chmod+x mazeIO

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


chmod 600不会使其可执行。

ls-l mazeIO显示了什么?您不需要在编译行中列出maze.h。看起来
g++
必须忽略它;你很幸运。ls-l mazeIO显示-rw------1,然后我在你的umask中的目录似乎坏了,我猜<代码>chmod 700 mazeIO用于急救。
umask
打印什么?如果您提供了一种更改umask设置的方法,这将更有帮助。