1 问题描述
我的配置是Clion + MingGW64 然后在编译代码的时候出现了上述的错误。我的Clion是破解的,MingGW64是官网下载的。(minggw64下载地址: https://sourceforge.net/projects/mingw-w64/)
代码第一次编译的时候,是完全没有问题的,编译正常,有输出。但是修改了一些代码的时候,第二次第三次去编译就出现了问题:不能编译了!也就是说,我的Clion编译器一个项目只能编译一次c文件。如果和我遇到一样问题的小伙伴可以来看看解决办法。(这里有人会问,会不会是你代码修改的问题,我想说,不是,我第二次代码中就一句printf("hello, world!"); 都不行)
下图是我的编译器报错:
D:/clion/x86_64-8.1.0-release-win32-sjlj-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot open output file main.exe: Invalid argument
collect2.exe: error: ld returned 1 exit status
mingw32-make.exe[3]: *** [CMakeFiles\main.dir\build.make:85: main.exe] Error 1
mingw32-make.exe[2]: *** [CMakeFiles\Makefile2:75: CMakeFiles/main.dir/all] Error 2
mingw32-make.exe[1]: *** [CMakeFiles\Makefile2:82: CMakeFiles/main.dir/rule] Error 2
mingw32-make.exe: *** [Makefile:117: main] Error 2
2 解决办法
ok,接下来我来讲讲解决办法,找了网上很多原因,都不能解决问题,后期我发现了也许是我的环境变量没有加,于是我加了一个环境变量就能很好的解决问题。
2.1 添加系统环境变量
控制面板 -> 所有控制面板项 -> 系统 -> 高级系统设置
变量名:MINGW64
变量值:你的mingw64文件所在的路径
2.2 修改path系统环境变量 ;%MINGW64%\bin
找到系统环境变量中的path,在后面加上;%MINGW64%\bin即可
2.3 测试是否添加成功
win + R 打开 cmd ,输入gcc -v,出现下图就说明系统环境变量添加成功。
2.4 成功
配置好后,进入clion,就会发现可以编译啦,不会再出现只能编译一次的现象了。
3 总结
我可能是个奇葩,在网上都找不到这种问题的解决办法,于是就各种尝试,找到了这个解决办法,网上存在的解决办法都不能解决我的问题,为了给大家提供方便,我这边把网上的办法拷贝过来,
其他解决办法如下(如果我的办法不能解决你的问题,可以参考一下别人的解决办法):
1、编译成功的例子在后台执行,有时一闪而过,如果再次build ,则会提示上述错误。解决方法:打开任务管理器,找到相应的exe进程,关闭即可; 或者直接关闭QtCreator。
2、没有编译成功的情况下,最常见情况是程序本身需要include的头文件被遗漏了。解决方法:细心查找基类所用的头文件,include之后即可。
3、.h文件中相关的槽函数在cpp文件中没有定义)。解决方法:查找遗漏的槽函数,根据需要,具体的定义。
4、.h文件中声明了全局变量,.cpp文件的函数里面使用了该全局变量。解决方法:.cpp文件外面没有初始化全局变量,初始化即可
(注:关于第一个解决办法,我尝试过,不管是打开任务管理器或者是cmd的tasklist命令都不能显示出后台正在执行的例子。)
OK,就写到这里,觉得有用的话点个赞再走吧~