centos make gcc报错/usr/bin/ld: cannot find -lstdc++ collect2: error: ld returned 1 exit status
make[1]: *** [Makefile:22759:stage1-bubble] 错误 2 make[1]: 离开目录“/home/dev2/gcc-7.5.0/build” make: ***注意:若libstdc++.so不是红色不要进行该软链接操作,防止把系统搞坏了。去lib64目录下查看,找不到libstdc++.so.6.0.19文件。最后去原来的目录 make -j4就可以了,不
·
make[1]: *** [Makefile:22759:stage1-bubble] 错误 2 make[1]: 离开目录“/home/dev2/gcc-7.5.0/build” make: ***
打开config.log看到报错:
/usr/bin/ld: cannot find -lstdc++ collect2: error: ld returned 1 exit status
解决方案:
查找libstdc++.so的路径:
sudo find / -name "libstdc++.so"
看到的路径是:
/usr/lib/gcc/x86_64-redhat-linux/4.8.2/libstdc++.so
执行命令设置 LD_LIBRARY_PATH 环境变量(你具体查出来的路径是什么就换成你查出来的路径):
export LD_LIBRARY_PATH=/usr/lib/gcc/x86_64-redhat-linux/4.8.2/libstdc++.so:$LD_LIBRARY_PATH
使用以下命令来验证 LD_LIBRARY_PATH 的设置:
echo $LD_LIBRARY_PATH
查询结果:
/usr/lib/gcc/x86_64-redhat-linux/4.8.2::/usr/local/mpc/lib:/usr/local/gmp/lib:/usr/local/mpfr/lib/:/usr/local/isl/lib
切换到库所在的目录:
cd /usr/lib/gcc/x86_64-redhat-linux/4.8.2
查看:
[root@localhost 4.8.2]# ls
32 crtprec80.o libgcc_eh.a libitm.spec
crtbegin.o finclude libgcc_s.so libquadmath.so
crtbeginS.o include libgcov.a libstdc++.a
crtbeginT.o libasan_preinit.o libgfortranbegin.a libstdc++.so
crtend.o libasan.so libgfortran.so libsupc++.a
crtendS.o libatomic.so libgfortran.spec libtsan.so
crtfastmath.o libcaf_single.a libgomp.a rpmver
crtprec32.o libcloog-isl.so.4 libgomp.so
crtprec64.o libgcc.a libgomp.spec
若:libstdc++.so是红色的说明是软链接错误。
查看软链接:
[root@localhost 4.8.2]# ll libstdc++.so
-rw-r--r--. 2 root root 13172960 7月 2 17:24 libstdc++.so -> ../../../../lib64/libstdc++.so.6.0.19
去lib64目录下查看,找不到libstdc++.so.6.0.19文件。
解决方案重新建立软链接:
sudo mv libstdc++.so ../../../../lib64/libstdc++.so.6.0.19
ln -s /usr/local/lib64/libstdc++.so.6.0.24 /usr/lib64/libstdc++.so.6
注意:若libstdc++.so不是红色不要进行该软链接操作,防止把系统搞坏了。
最后去原来的目录 make -j4就可以了,不在报这个错误了。
我是在装gcc-11.2.0遇到的该问题。
操作要慎重,最好备份原来的文件。修改底层库有几率系统崩溃。
更多推荐
所有评论(0)