【问题标题】:Compiling with GCC on windows 7: \mingw32\bin\ld.exe: cannot open output file a.exe在 Windows 7 上使用 GCC 编译:\mingw32\bin\ld.exe:无法打开输出文件 a.exe
【发布时间】:2023-11-16 18:08:01
【问题描述】:

这是我尝试用 gcc 编译一个简单的 hello world 程序时得到的结果。

c:\>gcc hello.c
hello.c:9:2: warning: no newline at end of file
C:\MinGW\bin\..\lib\gcc\mingw32\3.4.5\..\..\..\..\mingw32\bin\ld.exe: cannot open output file a.exe
: Permission denied
collect2: ld returned 1 exit status

是否与 Windows 7 管理权限有关?

如果正在创建输出文件但无法打开,它在哪里?

对不起,如果这是一个太多的菜鸟问题。到目前为止,我一直在使用 Dev-C++ 编译我的源代码。我尝试用谷歌搜索错误,但我只能找到文件已经打开,但任务管理器中没有提到这样的 exe。

编辑:该文件也位于 C:\hello.c

如果我把它放在其他驱动器上,我能做到吗?

当我将文件放在 D:\ 并尝试使用 cd d:\ 将其更改为任何其他驱动器时,不会更改驱动器。

【问题讨论】:

  • 要更改为驱动器 D,请使用 cd /d d:\ 或仅使用 d:。但是不,您不想在驱动器的根目录下工作。您可以使用mkdir 为自己创建一个目录,或者如果您遇到问题,请使用资源管理器 - 资源管理器应该可以帮助您通过 UAC 提示解决权限错误。

标签: c gcc compilation permission-denied


【解决方案1】:

是的,这是权限问题,您不能在管理员模式下运行命令行窗口。

不要在 C:\

中工作

将文件复制到我的文档下的文件夹、C: 的子文件夹或其他驱动器。

或者,如果您真的想在 C 的根目录下工作,请以管理员模式运行控制台:

要在 C: 中切换到 D:,只需键入 D:(只有在正确的驱动器上才使用 CD)

【讨论】:

    【解决方案2】:

    最常见的情况是您的程序可能仍在后台运行,可能挂在无限循环中。您可以尝试在进程列表中搜索该进程(按Alt+Ctrl+Del)并杀死它。

    【讨论】:

    • 我试过任务管理器,但没有提到exe。我在描述中写了这个。感谢您的回复。
    【解决方案3】:

    CodeBlocks-IDE 的 build-log 中的 g++.exe-command 显示了该命令 附加路径:C:\MinGW\lib,这是错误的。

    1. 如果将命令复制到 cmd 窗口(在项目目录中) 没有C:\MinGW\lib 编译器可以工作。当您复制CodeBlocks-Buil-log 中所示的命令时,它会失败,并在 cmd 窗口中显示相同的消息。

    2. 查看Settings > Compiler > Search Directories > Linker。你必须删除 C:\MinGW\lib 那里,但错误是,如果你这样做一次,它不会被删除。 你必须重复它,然后它才会起作用。

    【讨论】:

      最近更新 更多