collect2.exe: error: ld returned 1 exit status解决办法

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,就写到这里,觉得有用的话点个赞再走吧~

  • 24
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值