【问题标题】:ld.exe: cannot open output file ... : Permission deniedld.exe:无法打开输出文件...:权限被拒绝
【发布时间】:2011-12-01 02:41:50
【问题描述】:

我最近在 Windows 7 Ultimate 32bit 上安装了带有 mingw32 的 CodeBlocks,以便清理我的 c 技能,但这个问题让我有些难过。

我决定启动一个短斐波那契发生器以确保我的设置正常工作,但我遇到了障碍。

程序编译、链接和诸如此类的魅力,我得到了一个按预期运行的相应可执行文件。

如果我再次尝试编译会出现问题,然后我得到以下信息:

c:/codeblocks/mingw/bin/../lib/gcc/mingw32/4.4.1/../../../../mingw32/bin/ld.exe: cannot open output file bin\Debug\Fibonacci.exe: Permission denied

我什至无法编辑生成的可执行文件的权限。

我检查了通常的嫌疑人:

  • 可执行文件确实没有运行。
  • 可执行文件的路径对 mingw32 是可读写的(否则一开始就无法构建)
  • 我没有以任何形式运行 cygwin。

现在有趣的是:通常几分钟后,由 mingw32 生成的任何显示此访问被拒绝行为的可执行文件都会自动消失,而无需我的任何干预。

我在谷歌上搜索过,但大多数其他结果要么含糊不清,要么不适用。

我想知道是否有一些 Windows 7 安全设置对我的 .exe 造成严重破坏,但我对 Win 7 的了解并不多,不知道从哪里开始搜索。

有人有什么想法吗?

【问题讨论】:

  • 这是一个总的猜测......如果你正在构建 bin\Debug 目录,那么 code::blocks 可能正在使用它的集成调试器做一些事情,保持可执行文件上的文件句柄打开。尝试构建它以发布,看看你是否有同样的问题
  • 我认为@BrianGordon 的猜测不错。如果程序正在运行,请在尝试重建之前将其终止。
  • 可执行文件消失了?因为它们会被自动删除?听起来像是病毒扫描程序的问题。
  • Victor T. : 我只是得到 Permission denied tinman: 没有安装防病毒软件,我只是偶尔运行 mcafee 毒刺。我今晚要去看看UAC。
  • 不应在 C、C://users//yourname 或 C://ProgramFiles 或 C://ProgramFiles/Code::Blocks 等目录中创建您的 Code::Blocks 项目。

标签: c windows windows-7 codeblocks mingw32


【解决方案1】:

问题原因: 当前程序的进程仍在运行,没有中断。 (这就是你重启后没有这个问题的原因)

解决方法很简单: 转到 cmd 并键入命令 taskkill -im process_name.exe -f

例如:

 taskkill -im demo.exe -f

这里,

demo - 是我的程序名

【讨论】:

    【解决方案2】:

    我遇到了类似的问题。 Bitdefender 自动隔离了我由 MinGW g++ 创建的每个 exe 文件。我找到了一个扩展名为“qzquar”的文件,而不是完整的 exe 文件 testAutoPtr1.exe.48352.gzquar

    当我在 Bitdefender 中打开隔离项目时,我发现我的 exe 文件被隔离在那里。

    【讨论】:

      【解决方案3】:

      在关闭一些(我认为不必要的)Windows 服务后,我遇到了完全相同的问题。事实证明,当我再次打开 "Application Experience" 时,一切恢复正常。

      您可能只需要打开此服务吗?打开应用程序体验:

      1. 单击 Windows 开始按钮。

      2. 在标有“搜索程序和文件”的框中输入services.msc 并单击搜索按钮。标题为“服务”的新窗口打开。

      3. 右键单击“应用程序体验”行并从弹出菜单中选择“属性”。

      4. 将启动类型更改为“自动(延迟启动)”。

      5. 重启电脑。

      应用程序体验应该可以防止将来出现问题。

      【讨论】:

      • 这似乎是解决这个非常讨厌的问题的真正好方法。我在一些论坛帖子等上看到它没有解决。
      • 也为我工作,但我仍然不明白发生了什么。
      • 重启到+1后得到了很好的回答
      • 也为我工作,无法解释。
      • 我正在尝试用 MSYS2/ming32 构建一个软件包并遇到同样的问题。当配置脚本尝试编译测试程序时出现 ld 错误。 “应用程序体验”魔法不起作用。
      【解决方案4】:

      在 C++ 中使用 Atom 编辑器和 mingw(通过名为 gpp-compiler 的包)时出现此错误。关闭打开的控制台窗口解决了我的问题。

      【讨论】:

        【解决方案5】:

        可能是你的杀毒软件。

        就我而言,Malwarebytes 持有我程序可执行文件的句柄:

        使用进程资源管理器关闭句柄,或者只是禁用杀毒软件就可以了。

        【讨论】:

        • [已解决]在我的情况下,是防病毒软件阻止了它。我打开了防病毒程序,它记录了一个 ld.exe 被阻止的事件。如果您只是将异常添加到 ld.exe,此错误就会消失,无需禁用 Antivirus。
        【解决方案6】:

        遇到同样的问题。阅读this。禁用防病毒软件 (mcaffee)。等等

        由防病毒日志确认:

        Blocked by Access Protection rule d:\mingw64\x86_64-w64-mingw32\bin\ld.exe d:\workspace\cpp\bar\foo.exe User-defined Rules:ctx3 Action blocked : Create

        【讨论】:

          【解决方案7】:

          我遇到了类似的问题。使用名为 Unlocker(版本 1.9.2)的免费软件实用程序,我发现我的防病毒软件(Panda 免费版)在可执行文件上留下了挂锁,即使它没有检测到任何威胁。 Unlocker 能够将其解锁。

          【讨论】:

          • 谢谢,我可以通过从 Symantec Endpoint Protection 关闭文件系统自动防护来解决同样的问题。
          【解决方案8】:
          1. 打开任务管理器 -> 进程 -> 点击 .exe (Fibonacci.exe) -> 结束进程

            如果它不起作用

          2. 关闭 eclipse IDE(或您使用的任何 IDE)并重复步骤 1。

          【讨论】:

            【解决方案9】:

            最好的解决办法是在eclipse IDE中进入控制台,点击红色按钮来终止程序。 您将看到您的程序正在运行,并且可以在那里看到输出。 :) !!

            【讨论】:

            • 这是最好的解决方案,每个使用eclipse的人都应该使用这个。
            【解决方案10】:

            我有同样的行为,并通过以管理员身份运行 Code::Blocks 来修复它。

            【讨论】:

              【解决方案11】:

              您的程序仍在运行。您必须通过关闭命令行窗口来杀死它。 如果您按控制 alt 删除,任务管理器,进程(杀死与您的文件名匹配的那些)。

              【讨论】:

              • 正确答案...在这里真的很有帮助。
              【解决方案12】:

              如果您认为可执行文件被进程锁定,请尝试 SysInternals 的 Process Explorer。在文件/句柄中,输入 Fibonacci.exe,您应该会看到谁拥有该文件。

              如果还不够,您可以使用进程监视器(同样来自 SysInternals)来跟踪系统上所有进程在 Fibonacci.exe 上的活动。 通过一些分析(调用堆栈),您可能会发现对文件的访问被拒绝的原因以及导致文件消失的原因。

              【讨论】:

              • 我选择了您的答案,因为它看起来是考虑到我的问题陈述的最合理的解决方案。但我无法尝试,因为我运行它的机器崩溃了。因为我现在决定使用 linux,所以这对我来说是一个有争议的问题。
              猜你喜欢
              • 2011-10-16
              • 1970-01-01
              • 1970-01-01
              • 2018-04-20
              • 2014-07-19
              • 1970-01-01
              • 2011-03-21
              • 2016-10-10
              • 2021-01-04
              相关资源
              最近更新 更多