Centos利用yum升级GCC版本,一直启用,并解决lib64libstdc++.so.6: version `GLIBCXX

mac2024-08-15  87

在深度学习的使用过程中经常会碰到编译这个问题,对于c语言编译来说GCC的版本是比较重要的,如果你发现你的linux计算机的gcc版本比较低:

首先挑选一个合适的版本进行安装,进行这一步操作。链接1、链接2

2020.4.27更新 需要提到的是:一般如果需要升级gcc至4.8或更高版本,建议直接采用安装SCL源之后安装devtoolset-7(devtoolset-7目前gcc版本为7.3),因为devtoolset-6及之前的版本都已经结束支持,只能通过其他方法安装(链接1中的方法),但是可能会有其他错误。

启用新版本的GCC。注意!!

scl enable devtoolset-x bash

这个命令只是在这个Shell中启用,你如果想要一只启用怎么办?修改用户的环境变量文件:

vim ~/.bashrc

加入:

source /opt/rh/devtoolset-x/enable

其中x是你的具体版本。 如果你是root用户,修改的是系统环境变量:

vim /etc/bashrc

2020.4.29更新:在升级新版本后,在使用mmdetection的时候发现出现了一个错误(在升级到7.3版本的时候出现了,升级到4.9版本没出现)

/lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found

利用下面代码可以看到动态库里面包含的GLIBCXX版本

strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX 输出: GLIBCXX_3.4 GLIBCXX_3.4.1 GLIBCXX_3.4.2 GLIBCXX_3.4.3 GLIBCXX_3.4.4 GLIBCXX_3.4.5 GLIBCXX_3.4.6 GLIBCXX_3.4.7 GLIBCXX_3.4.8 GLIBCXX_3.4.9 GLIBCXX_3.4.10 GLIBCXX_3.4.11 GLIBCXX_3.4.12 GLIBCXX_3.4.13 GLIBCXX_3.4.14 GLIBCXX_3.4.15 GLIBCXX_3.4.16 GLIBCXX_3.4.17 GLIBCXX_3.4.18 GLIBCXX_3.4.19 GLIBCXX_DEBUG_MESSAGE_LENGTH

解决的大致思路主要有两个,链接1是通过yum来寻找到提供动态库的安装包,然后安装,但是我尝试了这个方法,发现它还是下载老版本的libstdc++.so.6,所以尝试了第二个方法链接2,感觉这个思路很清晰,先找找/lib64下面有没有动态库,有的话直接做软连接,没有的话在系统里找找有没有匹配的版本,利用

sudo find / -name libstdc++.so.6* (斜杠代表的是路径,这是在全路径下搜索了)

我找到了自己路径下有更高版本的动态库:

/home/skye@iaclab.cse/Software/anaconda3/pkgs/libgcc-5.2.0-0/lib/libstdc++.so.6.0.21

于是再执行文件删除、复制、建立新的软连接这样的操作:

(base) [skye@iaclab.cse@gpu-n1-iaclab lib64] sudo cp /home/skye@iaclab.cse/Software/anaconda3/pkgs/libgcc-5.2.0-0/lib/libstdc++.so.6.0.21 /lib64/libstdc++.so.6.0.21 (base) [skye@iaclab.cse@gpu-n1-iaclab lib64] sudo rm /lib64/libstdc++.so.6 (base) [skye@iaclab.cse@gpu-n1-iaclab lib64] sudo ln -s /lib64/libstdc++.so.6.0.21 /lib64/libstdc++.so.6

实际上可以发现系统里还有其他很多地方有这个动态库的,我找到的就有这么多:

/home/skye@iaclab.cse/Software/anaconda3/pkgs/libstdcxx-ng-9.1.0-hdf63c60_0/lib/libstdc++.so.6 /home/skye@iaclab.cse/Software/anaconda3/pkgs/libstdcxx-ng-9.1.0-hdf63c60_0/x86_64-conda_cos6-linux-gnu/sysroot/lib/libstdc++.so.6 /home/skye@iaclab.cse/Software/anaconda3/pkgs/libgcc-5.2.0-0/lib/libstdc++.so.6 /home/skye@iaclab.cse/Software/anaconda3/lib/libstdc++.so.6 /home/skye@iaclab.cse/Software/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/lib/libstdc++.so.6 /home/skye@iaclab.cse/Software/anaconda3/envs/skye/lib/libstdc++.so.6
最新回复(0)