在Windows 7上使用GCC编译:\mingw32\bin\ld.exe无法打开输出文件a.exe。

5

当我尝试使用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:\更改到任何其他驱动器时,它不会更改驱动器。


1
要切换到D盘,可以使用cd /d d:\或者只是输入d:。但是,你不应该在驱动器的根目录下工作。你可以使用mkdir命令创建一个目录,或者如果遇到问题可以使用资源管理器 - 资源管理器可以帮助你通过UAC提示解决权限错误。 - Rup
4个回答

6

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

不要在C:\上工作。

将文件复制到我的文档文件夹下的一个文件夹,或者C:的子文件夹或另一个驱动器。

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

在C:中切换到D:,只需键入D:(只有当已经在正确的驱动器上时才使用CD命令)。


1
最常见的情况是您的程序可能仍在后台运行,可能被卡在无限循环中。您可以尝试在进程列表中搜索该进程(按Alt+Ctrl+Del),然后将其终止。

我尝试了任务管理器,但没有提到exe文件。我在描述中写了那个。不过还是谢谢你的回复。 - stirredo

0

我发现问题是将源代码托管在Google Drive下;.. 耶稣超级明星查克·诺里斯范·达姆.. 尝试了3个小时才弄清楚这个问题(使用VS Code + mingw64)。

解决方案: 只需将包含cpp源文件的文件夹移出Google Drive管理的文件夹树(原本在f:\gd中),然后将我的源代码移动到f:\dev中。


-2

在CodeBlocks-IDE的构建日志中,g++.exe命令显示了一个额外的路径:C:\MinGW\lib,这是错误的。

  1. 如果你将命令复制到cmd窗口(在你的项目目录中)而不包括C:\MinGW\lib,编译器就可以工作。当你按照CodeBlocks-Build-log中所示的方式复制命令时,它会失败,并在cmd窗口中显示相同的消息。

  2. 查看设置 > 编译器 > 搜索目录 > 链接器。你必须删除那里的C:\MinGW\lib,但问题是,如果你只删除一次,它不会被删除。你必须重复这个步骤,然后它才能正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接