天天看點

conda環境報錯:libgomp.so.1: version `GOMP_4.0' not found?libstdc+

問題

之前的conda環境好好地,最近不知為何被破壞了,運作即報錯:

/miniconda3/opt/lib/R/bin/exec/R: /miniconda3/opt/lib/R/bin/exec/../../lib/../../libgomp.so.1: version `GOMP_4.0' not found (required by /miniconda3/opt/lib/R/bin/exec/../../lib/libR.so)
/miniconda3/opt/lib/R/bin/exec/R: /miniconda3/opt/lib/R/bin/exec/../../lib/../.././libstdc++.so.6: version `CXXABI_1.3.8' not found (required by /miniconda3/opt/lib/R/bin/exec/../../lib/../../libicuuc.so.68)
/miniconda3/opt/lib/R/bin/exec/R: /miniconda3/opt/lib/R/bin/exec/../../lib/../.././libstdc++.so.6: version `CXXABI_1.3.9' not found (required by /miniconda3/opt/lib/R/bin/exec/../../lib/../../libicuuc.so.68)
/miniconda3/opt/lib/R/bin/exec/R: /miniconda3/opt/lib/R/bin/exec/../../lib/../.././libstdc++.so.6: version `CXXABI_1.3.8' not found (required by /miniconda3/opt/lib/R/bin/exec/../../lib/../../libicui18n.so.68)
/miniconda3/opt/lib/R/bin/exec/R: /miniconda3/opt/lib/R/bin/exec/../../lib/../.././libstdc++.so.6: version `CXXABI_1.3.9' not found (required by /miniconda3/opt/lib/R/bin/exec/../../lib/../../libicui18n.so.68)      

原因

conda對應目錄下的“libgomp.so.1”和“libstdc++.so.6”動态庫檔案(lib)中相關子產品的版本比較舊,不包含相應版本子產品導緻的。

系統中動态庫存放路徑在:/usr/lib/x86_64-linux-gnu/ 或 /usr/lib/ 或 /usr/lib64/。

anaconda中動态庫存放路徑是:~/anaconda2/lib。

如果系統版本高,則用它替換掉anaconda中的低版本,否則更新。

檢視這兩個路徑下庫的版本:

strings /usr/lib/libstdc++.so.6 | grep 'CXXABI'
strings /miniconda3/opt/lib/R/bin/exec/../../lib/../.././libstdc++.so.6 | grep 'CXXABI'

##都是下面這幾個
CXXABI_1.3
CXXABI_1.3.1
CXXABI_1.3.2
CXXABI_1.3.3
CXXABI_1.3.4
CXXABI_1.3.5
CXXABI_1.3.6
CXXABI_1.3.7
CXXABI_TM_1      

我的系統中的libgomp.so.1可以直接複制替換掉anaconda中的libgomp.so.1,而libstdc++.so.6沒作用,因為兩者一樣。

那麼需要更新系統的libstdc++.so.6。

解決

下載下傳libstdc++.so.6.0.26

連結: ​​​https://pan.baidu.com/s/1qqXBMxmKMDpp-jycRnHyMQ​​​ 提取碼: bv88

将檔案移動到系統目錄/usr/lib64/下面。

ll libstdc++.so*
chmod +x libstdc++.so.6.0.26
mv libstdc++.so.6 libstdc++.so.6.bak
ln -s libstdc++.so.6.0.26 libstdc++.so.6
strings /usr/lib64/libstdc++.so.6 | grep CXXABI      

這時已經更新:

CXXABI_1.3
CXXABI_1.3.1
CXXABI_1.3.2
CXXABI_1.3.3
CXXABI_1.3.4
CXXABI_1.3.5
CXXABI_1.3.6
CXXABI_1.3.7
CXXABI_1.3.8
CXXABI_1.3.9
CXXABI_1.3.10
CXXABI_1.3.11
CXXABI_1.3.12
CXXABI_TM_1
CXXABI_FLOAT128
CXXABI_1.3
CXXABI_1.3.11
CXXABI_1.3.2
CXXABI_1.3.6
CXXABI_FLOAT128
CXXABI_1.3.12
CXXABI_1.3.9
CXXABI_1.3.1
CXXABI_1.3.5
CXXABI_1.3.8
CXXABI_1.3.4
CXXABI_TM_1
CXXABI_1.3.7
CXXABI_1.3.10
CXXABI_1.3.3      

直接将系統中的libstdc++.so.6複制替換掉anaconda中的libstdc++.so.6即可。