Centos利用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
    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章