编译错误发生后“权限被拒绝”

时间:2016-08-07 08:29:42

标签: c mingw clion

我正在研究这段代码,试图学习基本的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;}代码,我仍然会遇到这个问题。

修改 (从评论中集成)

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

1 个答案:

答案 0 :(得分:0)

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

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

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

确保调试工具不会以某种方式隐藏,或者只是在您希望它快速失败时启动没有调试器的程序。