【问题标题】:GCC on Windows creates undeletable fileWindows 上的 GCC 创建不可删除的文件
【发布时间】:2021-02-25 20:51:55
【问题描述】:

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

#include <stdio.h>
void main()
{
    printf("Hallo, Welt!\n");
};

我确实跑了

gcc Hello.c -o Hello

这确实创建了一个名为 Hello.exe 的 exe 应用程序 我确实运行了它,它应该打招呼

我确实在文件中添加了注释,保存它,然后在 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 文件资源管理器中删除该文件 确实弹出了一个窗口,并要求我使用管理员权限删除文件 所以我确实允许这个管理员权限,因为我是管理员 然后它确实弹出了另一条消息...我需要计算机本身的一些权限 我不知道我现在应该做什么...我是计算机的管理员,我无法删除文件...如果我右键单击文件并打开文件设置,我看到管理员应该拥有所有权限。

我看到的文件没有运行...文件没有被任何东西锁定

出了什么问题...是因为代码或编译器还是窗口问题...我怎样才能杀死这个文件?

编辑: 该文件未运行...在任务管理器中显示任何用户的所有任务时,该文件不会以任何方式显示并且未运行。

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

文件一直无法杀死。

【问题讨论】:

  • 通常当您无法删除 EXE 文件时,是因为它正在运行。检查任务管理器?
  • 可能与病毒有关(隔离?)...重新启动(关闭所有应用程序)并尝试再次删除...暂时禁用防病毒。
  • 你的重启想法可能会奏效......但必须有原因和解决方案......我不想在任何小的编辑之后重新启动,然后我才能编译......问题一定有一些可解决的原因。可能是因为它没有返回值?但主要是无效的?也许 Windows 正在做一些 oder gcc 的事情?
  • 请注意,根据 C 标准,main 的返回类型应为 int
  • @Michael 请注意,根据 C99,5.1.2.2.3(程序终止),void main 将向宿主环境返回未指定的终止状态,否则程序有效

标签: c windows gcc compiler-errors locked-files


【解决方案1】:

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

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

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

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

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

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

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

感谢所有试图帮助我的人。

【讨论】:

    猜你喜欢
    • 2010-12-21
    • 1970-01-01
    • 1970-01-01
    • 2018-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-22
    • 2019-12-14
    相关资源
    最近更新 更多