"Permission denied" 发生编译错误后

"Permission denied" after a compilation error occured

我正在编写这段代码,试图学习基本的 C 编程。 我设法编译 运行 一个基本程序。

然后,当我尝试 运行 编译器引发错误的代码时,问题就开始了——从那时起我得到:

c:/mingw/bin/../lib/gcc/mingw32/4.9.3/../../../../mingw32/bin/ld.exe: cannot open output file tests.exe: Permission denied
collect2.exe: error: ld returned 1 exit status
mingw32-make.exe[3]: *** [tests.exe] Error 1
mingw32-make.exe[2]: *** [CMakeFiles/tests.dir/all] Error 2

无论我将代码更改为什么,即使是基本的 int main() {return 0;} 代码,我也一直遇到这个问题。


编辑 (从评论中整合):

找到解决方案,我的程序仍在 运行ning,我不得不手动停止它。我习惯了 python/java,一旦出现错误程序就会停止。 C中不应该也是这样吗?

我假设稍后触发链接器失败的错误实际上是 运行时间错误,而不是编译器错误。

如您所知,Windows 无法覆盖在 运行ning 程序(或 运行ning 程序本身)中打开的文件,因此错误ld.exe(链接器)尝试创建一个新的可执行文件。

最可能的原因是您以调试模式(绿色甲虫图标)而不是正常 运行(绿色 "play" 箭头)启动程序。这会将调试器(可能 gdb)附加到您的程序。当您的程序崩溃时,调试器会停止运行并等待您进行调查,从而使进程保持活动状态。

确保调试工具没有以某种方式隐藏,或者当您希望程序快速失败时,在没有调试器的情况下启动程序。