简单编译时出现“无法打开输出文件a.out: 权限被拒绝”的错误提示

7

我在vim中编写了一些代码,但每次尝试运行代码时都会显示以下内容:

coolmego@coolmego-PC:~/coolmego/cprograms$ gcc dfs8puzz.c 
/usr/bin/ld: cannot open output file a.out: Permission denied
collect2: ld returned 1 exit status
coolmego@coolmego-PC:~/coolmego/cprograms$ ./a.out
bash: ./a.out: No such file or directory

我该怎么办?


嗯,但当我使用sudo命令时,它可以正常工作...尽管我已经通过“chmod 777文件名”更改了所有读取、写入和执行模式的权限...但它在指定的目录中无法正常工作,而该文件实际上是保存在该目录中的... - sd1517
ls -ld ~/coolmego/cprograms 命令告诉你什么? - Dennis Williamson
@ Dennis Williamson:它显示的内容类似于“drwxr-xr-x 2 root root 4096 2011-03-15 19:37 /home/coolmego/coolmego/cprograms/”。 - sd1517
你需要执行 sudo chown cmego:cmego . * - TMN
7个回答

8

移动到你有写入权限的目录。


嗯,但当我使用sudo命令时,它可以正常工作...尽管我已经通过“chmod 777文件名”更改了所有读取、写入和执行模式的权限...但它在指定的目录中无法正常工作,而该文件实际上是保存在该目录中的... - sd1517

4

0

当你运行sudo命令时,实际上是以root用户身份运行命令。可能你弄乱了权限,使得根用户拥有这些文件。因此,当你运行sudo命令时,它就可以正常工作(root可以在这些目录中写入)。你需要让coolmego拥有这些文件。例如:

sudo chown coolmego /home/coolmego/coolmego/cprograms/
chmod 700 /home/coolmego/coolmego/cprograms/

0

删除/etc/fstab中的用户选项。fstab中带有"user"的任何内容都会自动挂载为noexec,除非在fstab中明确给出exec选项。


0

尝试给定目标输出的目录赋予读写权限。如果您正在使用个人系统,则可以执行“sudo chmod 777”命令。


-1
我曾经遇到过同样的问题,花了一个小时才发现是我的杀毒软件造成的,关闭它后一切正常。

目前你的回答不够清晰,请编辑并添加更多细节,以帮助其他人理解它如何回答问题。你可以在帮助中心找到有关如何编写好答案的更多信息。 - Community

-5
尝试执行命令chmod -R 777 ~/coolmego/cprograms

1
你应该避免这样做。这会使你的所有文件都可执行,包括你的c代码文件。如果你在这个子目录下有很多文件,撤销这个命令可能会很麻烦。 - Lynch
1
不是一个好主意,而且也行不通。问题不在于权限,而在于所有权。 - Gilles 'SO- stop being evil'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接