g++编译C++程序遇到 error: ld returned 1 exit status 错误的解决方法

/tmp/ccWem6tZ.o:在函数‘__static_initialization_and_destruction_0(int, int)’中:

p.cpp:(.text+0x651): 截断重寻址至相符: R_X86_64_PC32 针对 .bss

p.cpp:(.text+0x664): 截断重寻址至相符: R_X86_64_PC32 针对 .bss

collect2: error: ld returned 1 exit status

我只是觉得这几句错误都可能有人搜索,所以放在标题中

首先点名解决方法

可能是数组开太大的原因

然后没兴趣的可以改一下程序试试,感兴趣的可以看看我的心酸历程

原本的错误长这样:

/tmp/ccWem6tZ.o:在函数‘__static_initialization_and_destruction_0(int, int)’中:
p.cpp:(.text+0x651):  截断重寻址至相符: R_X86_64_PC32 针对 .bss
p.cpp:(.text+0x664):  截断重寻址至相符: R_X86_64_PC32 针对 .bss
collect2: error: ld returned 1 exit status

在搜索解决方法的过程中也看到有人由于这个错误很绝望,我也没有绝望吧但是真的麻烦了好久。
一看是全部复制粘贴百度,但是什么都搜不到,后来搜这一句p.cpp:(.text+0x651): 截断重寻址至相符: R_X86_64_PC32 针对 .bss结果还是什么有用的东西都没有;
还尝试过这一句函数‘__static_initialization_and_destruction_0(int, int)’知道了原来c程序运行的时候,对于函数会先生成一个这个‘__static_initialization_and_destruction_0(int, int)’来虚拟运行啥的= =
我也搞不清
最后搜ld returned 1 exit status发现有人列出了几个可能的情况:

函数名不对,如printf,scanf什么的打错了
自定义的函数调用时名字写错

可是我寻思这也不是没遇见过啊,报错一般是 not declare 啥的啊。。。
总之检查了一遍没有这种情况;

解决

然后看了另一篇博客说要看collect2: error: ld returned 1 exit status这一句之前的错误是什么,然后我又去看了一下我的错误,搜索p.cpp:(.text+0x651): 截断重寻址至相符: R_X86_64_PC32 针对 .bss没有任何结果,之后又试了一下截断重寻址至相符: R_X86_64_PC32 针对 .bss发现了这唯一篇博客,上面提到了编译内存的问题,然后突然想起来我做上一道题的时候开了一个巨大的数组,这个程序开了两个这么大的数组,然后去吧数量级降低了一位(本来是5e8的八倍的整型数组,改成了5e7的级别)然后就成功运行了

救命博客:https://blog.csdn.net/ai297313/article/details/42711837

这东西搞了我一下午大概三个多小时吧。。。反正研究计算机方面总是遇到各种各样的问题,写个博客也是想让自己记住,还有就是希望尽量能让别人也获得帮助

你可能感兴趣的:(C++闲谈)