在深度學習的使用過程中經常會碰到編譯這個問題,對於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/[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