我正在研究这段代码,试图学习基本的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中那样吗?
答案 0 :(得分:0)
我认为稍后触发链接器失败的错误实际上是运行时错误,而不是编译器错误。
正如您所知,Windows无法覆盖在正在运行的程序中打开的文件(或者正在运行的程序本身),因此ld.exe
(链接器)尝试创建新的可执行文件时出错。
最可能的原因是您正在调试模式(绿色甲虫图标)而不是正常运行(绿色“播放”箭头)启动程序。这会将调试器(可能是gdb
)附加到您的程序中。当程序崩溃时,调试程序会将其停在轨道上并等待您进行调查,从而使进程保持活动状态。
确保调试工具不会以某种方式隐藏,或者只是在您希望它快速失败时启动没有调试器的程序。