Gcc 无法在简单编译中打开输出文件a.out:权限被拒绝

Gcc 无法在简单编译中打开输出文件a.out:权限被拒绝,gcc,permissions,Gcc,Permissions,我在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:

我在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

我该怎么办?

移动到允许您写入的目录。

尝试
chmod-R 777~/coolmego/cprograms
当您运行sudo时,您实际上是以root用户身份运行命令。可能您最终弄乱了权限,使root拥有这些文件。因此,当您运行sudo时,它就可以正常工作(root可以在这些目录中写入内容)。你需要coolmego来拥有这些文件。例如:

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

删除/etc/fstab中的用户选项。除非在fstab中明确给出exec,否则fstab中包含user的任何内容都会自动装入noexec。

尝试向目标目录授予读写权限以获取输出。如果您使用的是个人系统,您可以执行“sudo chmod 777”

这是因为如果您只有写入权限,但您不是目录的所有者

  • 检查您的用户名:

    whoami
    
  • 使自己成为目录及其内容的所有者:

     sudo chown -R "$USER:" /path/to/the/directory
    
  • 设置读/写/执行权限

    chmod -R 700 /path/to/the/directory
    

  • 请参阅

    yaa..但当我使用sudo命令时,它可以正常工作…尽管我将权限更改为“全部读取,写入执行模式…”通过“chmod 777 filename”…但它不在实际保存它的指定目录内工作。
    ls-ld~/coolmego/cprograms
    告诉你什么?@Dennis Williamson:它显示了类似这样的内容:“drwxr-xr-x 2 root root 4096 2011-03-15 19:37/home/coolmego/coolmego/cprograms/”你需要做
    sudo chown cmego:cmego*yaa..但当我使用sudo命令时,它可以正常工作…虽然我将权限更改为“全部读取,写入执行模式..通过“chmod 777 filename”…但它不在实际保存它的指定目录内工作…您应该避免这种情况。您将使所有文件都可执行,甚至是c代码文件。如果此子目录中有许多文件,则还原此命令可能会很痛苦。这不是一个好主意,而且无论如何也不会起作用。问题不在于权限,而在于所有权。