Centos7利用yum升级GCC版本,一直启用,并解决/lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found

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

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

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

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

    scl enable devtoolset-x bash
    

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

    vim ~/.bashrc
    

    加入:

    source /opt/rh/devtoolset-x/enable
    

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

    vim /etc/bashrc
    
  3. 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/[email protected]/Software/anaconda3/pkgs/libgcc-5.2.0-0/lib/libstdc++.so.6.0.21
    

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

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

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

    /home/[email protected]/Software/anaconda3/pkgs/libstdcxx-ng-9.1.0-hdf63c60_0/lib/libstdc++.so.6
    /home/[email protected]/Software/anaconda3/pkgs/libstdcxx-ng-9.1.0-hdf63c60_0/x86_64-conda_cos6-linux-gnu/sysroot/lib/libstdc++.so.6
    /home/[email protected]/Software/anaconda3/pkgs/libgcc-5.2.0-0/lib/libstdc++.so.6
    /home/[email protected]/Software/anaconda3/lib/libstdc++.so.6
    /home/[email protected]/Software/anaconda3/x86_64-conda_cos6-linux-gnu/sysroot/lib/libstdc++.so.6
    /home/[email protected]/Software/anaconda3/envs/skye/lib/libstdc++.so.6
    

你可能感兴趣的:(Linux,编译,深度学习,centos,linux)