Windows上的GCC创建不可删除的文件

Windows上的GCC创建不可删除的文件,c,windows,gcc,compiler-errors,locked-files,C,Windows,Gcc,Compiler Errors,Locked Files,我已经在Windows7上安装了MinGW 我确实写了一个hello world应用程序 #include <stdio.h> void main() { printf("Hallo, Welt!\n"); }; 这确实创建了一个名为Hello.exe的exe应用程序 我确实运行了它,它应该打招呼的 我确实在文件中添加了注释,保存了它,并以Admin的身份在CMD中重新运行了编译器 然后我犯了个错误 c:/mingw/bin/../lib/gcc/min

我已经在Windows7上安装了MinGW 我确实写了一个hello world应用程序

#include <stdio.h>
void main()
{
    printf("Hallo, Welt!\n");
};
这确实创建了一个名为Hello.exe的exe应用程序 我确实运行了它,它应该打招呼的

我确实在文件中添加了注释,保存了它,并以Admin的身份在CMD中重新运行了编译器 然后我犯了个错误

c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: cannot open output file Hello.exe: Permission denied
collect2.exe: error: ld returned 1 exit status
因此,我尝试在windows文件资源管理器中删除该文件 确实弹出了一个窗口,要求我使用管理员权限删除该文件 所以我允许这个管理员权限,因为我是管理员 然后它确实弹出了另一条消息。。。我需要电脑的一些权限 我不知道我现在该做什么。。。我是电脑管理员,我不能删除文件。。。如果我右键单击文件并打开文件设置,在那里我看到的权限管理员应该拥有所有权限

文件没有按我看到的那样运行。。。文件没有被任何东西锁定

怎么了。。。这是因为代码或编译器,还是一个窗口的东西。。。我怎样才能删除这个文件

编辑: 文件未运行。。。在Taskmanager中,当显示任何用户的所有任务时,文件dos不会以任何方式显示,也不会运行

防病毒软件已关闭,对问题没有影响 我也尝试过关闭防火墙


该文件无法修改。

我找到了一个解决方案。。。看起来,直到现在

我确实删除了C:\MinGW 我确实以管理员的身份重新安装了MinGW,在安装过程中,我检查了为所有用户安装MinGW的选项 我在系统设置中检查了Windows Path变量,只是为了确保它仍然存在于C:\MinGW\bin中

然后我再次尝试编译Hello.c文件,错误再次出现

因此,我确实为源C:\My_C_Files创建了一个新文件夹
现在,我在windows文件资源管理器中右键单击它,然后转到文件夹属性,以使用文件/文件夹权限。 我授予用户广泛的权限和管理员的所有权限,例如允许创建子文件夹读取权限删除写入读取更改,以及授予用户和管理员的大部分权限。 我还将所有权授予了用户和管理员 所有这些权利都适用于文件夹的任何子目录,即使它是空的。 然后我将*.c源代码文件复制到这个新文件夹中。 我确实再次尝试从CMD控制台编译它,第一次,因为它总是工作,然后再次,问题总是出现的地方。。。这一次,它确实工作了,并且一次又一次地覆盖了*.exe文件,以确保我确实删除了*.exe并重新编译了它,它仍然工作

结论:它与源文件夹或目标文件夹的文件夹权限及其内容的权限和/或所需文件夹的所有权有关

现在我不再有ld.exe或collect2.exe-权限错误,因为gcc返回1退出状态

我在谷歌上看到一些人,大多数人说应用程序正在运行,但事实并非如此,其他人建议启用一些对我没有帮助的windows服务,其他人谈论权限,但大多是模糊的提示,一些人谈论符号链接和其他疯狂的东西。这是我发现的,windows对文件夹的权限以及用户和管理员的内容


感谢所有曾经帮助过我的人。

通常当你无法删除EXE文件时,是因为它正在运行。检查任务管理器?某些与病毒相关的内容,可能是(隔离?)…重新启动(关闭所有应用),然后再次尝试删除。。。暂时禁用防病毒。重新启动的想法可能会奏效。。。但一定有原因和解决办法。。。在编译之前,我不想在任何小编辑之后重新启动。。这个问题一定有可以解决的原因。可能是因为它没有返回值吗?但主要是空虚吗?也许windows正在为gcc做些什么?请注意,根据C标准,
main
的返回类型应为
int
@Michael请注意,根据C99,5.1.2.2.3(程序终止),
void main
将向主机环境返回未指定的终止状态,否则程序是有效的
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: cannot open output file Hello.exe: Permission denied
collect2.exe: error: ld returned 1 exit status