【问题标题】:/mingw32/bin/ld.exe: cannot open output file HelloWorld.exe: Permission denied collect2.exe: error: ld returned 1 exit status/mingw32/bin/ld.exe:无法打开输出文件 HelloWorld.exe:权限被拒绝 collect2.exe:错误:ld 返回 1 退出状态
【发布时间】:2021-02-07 23:37:16
【问题描述】:
#include<iostream>
using namespace std;
int main(){
    cout << "Hello World\n";
    return 0;
} 

这是一个简单的程序,我只是在其中打印“Hello World”,但每次都会出现这个错误。

[Running] cd "e:\C++\Data Types\" && g++ HelloWorld.cpp -o HelloWorld && "e:\C++\Data Types\"HelloWorld
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: cannot open output file HelloWorld.exe: Permission denied
collect2.exe: error: ld returned 1 exit status

我已经尝试了所有方法,但无法生成HelloWorld.exe 文件并运行此代码。

【问题讨论】:

  • 这意味着您的防病毒软件已打开文件,或者您仍在运行以前的可执行文件,或者您的用户没有权限写入文件存在权限问题。我的投票是第一个,特别是如果您使用的防病毒软件与操作系统附带的防病毒软件不同。
  • @drescherjm 防病毒软件正在阻止HelloWorld.exe 运行,因此为了运行它,我禁用了防病毒软件保护,但问题仍然存在。
  • 浏览到文件夹e:\C++\Data Types\HelloWorld并查看文件是否存在
  • 我的第二条建议是在 c++ 编程中永远不要使用带有空格的路径。
  • 某些 AV 具有沙盒模式,如果激活该模式会导致 c++ 软件无法运行。我已经用 aVast 看到了这一点。我的代码通常有一个特殊的根文件夹,如 c:\programming 或像 x: 这样的驱动器,并告诉我的 AV 忽略整个树。

标签: c++ c++11 visual-studio-code


【解决方案1】:

如果您使用的是 Visual Studio 代码,您可以删除 filename.exe(显示在 filename.cpp 下方),然后重新构建即可。

如图所示

【讨论】:

    【解决方案2】:

    那是因为你已经在终端中打开了这个文件。你必须先杀死终端。

    【讨论】:

      【解决方案3】:

      这是因为您的防病毒软件已删除该文件或阻止它执行。 解决步骤:

      1. 复制您的代码并删除文件或转到第 2 步
      2. 创建一个新文件并在运行新代码之前将代码粘贴到其中,确保从防病毒扫描中排除/隔离您的程序文件夹。(或关闭防病毒或将其置于静默模式)因此它不再删除或移动你的文件。
      3. 运行新文件,它现在应该可以正常运行了 :))

      Norton file excluding steps

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-05-04
        • 2020-05-06
        • 2014-09-03
        • 1970-01-01
        • 2011-12-01
        • 2017-12-18
        • 1970-01-01
        相关资源
        最近更新 更多