Bug描述
今天主要解決一個(gè) Bug:libstdc++.so.6: version GLIBCXX_3.4.29' not found
主要是和 libstc++
版本問(wèn)題相關(guān),找了很多方法,其他很多方法都是直接修改libstc++.so
的版本,但是直接修改這種可能被多個(gè)共享庫(kù)依賴(lài)的庫(kù)版本將會(huì)牽一發(fā)動(dòng)全身引出很多問(wèn)題,本著越復(fù)雜風(fēng)險(xiǎn)越大的原則
,現(xiàn)提出最簡(jiǎn)單的解決方法。
Bug 總體描述如下:
ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.29’ not found (required by /home/hello/anaconda3/envs/eai/lib/python3.8/site-packages/scipy/spatial/_ckdtree.cpython-38-x86_64-linux-gnu.so)
可以看到libstc++.so
是被 /home/hello/anaconda3/envs/eai/lib/python3.8/site-packages/scipy/spatial/_ckdtree.cpython-38-x86_64-linux-gnu.so
所引用的,因此可以調(diào)到對(duì)應(yīng)的文件夾查看
處理
# 這里你需要調(diào)整為自己文件庫(kù)的路徑
cd /home/hello/anaconda3/envs/eai/lib/python3.8/site-packages/scipy/spatial/
查看一下庫(kù)的依賴(lài)
ldd _ckdtree.cpython-38-x86_64-linux-gnu.so
輸出
linux-vdso.so.1 (0x00007ffc7dbd4000)
libstdc++.so.6 => /home/pgp/anaconda3/envs/eai/lib/python3.8/site-packages/scipy/spatial/./../../../../libstdc++.so.6 (0x00007fc143141000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fc142da3000)
libgcc_s.so.1 => /home/pgp/anaconda3/envs/eai/lib/python3.8/site-packages/scipy/spatial/./../../../../libgcc_s.so.1 (0x00007fc14340d000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fc142b84000)
然后直接去到=>
指向的庫(kù)的路徑
/home/pgp/anaconda3/envs/eai/lib/python3.8/site-packages/scipy/spatial/./../../../../
查看一下絕對(duì)路徑
pwd
輸出
/home/pgp/anaconda3/envs/eai/lib
重點(diǎn):利用export
添加路徑
export LD_LIBRARY_PATH=/home/hello/anaconda3/envs/eai/lib:$LD_LIBRARY_PATH
持久export方法解決
注意:但是這是暫時(shí)有效的,即重開(kāi)一個(gè)終端可能無(wú)效
方法1:將 lib 目錄加到 /etc/ld.so.conf 中然后ldconfig
方法2:將export LD_LIBRARY_PATH=/home/hello/anaconda3/envs/eai/lib:$LD_LIBRARY_PATH
echo export LD_LIBRARY_PATH=/home/hello/anaconda3/envs/eai/lib:$LD_LIBRARY_PATH >> ~/.bashrc
source ~/.bashrc
參考:https://blog.csdn.net/u011029104/article/details/122966361
最后
我期間測(cè)試了很多的方法
- 修改libstdc++.so的版本:會(huì)導(dǎo)致對(duì)libc.so的版本又會(huì)有新的要求
- 用patchelf修改庫(kù)的路徑依賴(lài),但是在我自己的電腦有效,但是在遠(yuǎn)程無(wú)效
總結(jié)&參考
越復(fù)雜風(fēng)險(xiǎn)越大,但是同樣將上上面方法所需的參考資料也附上,萬(wàn)一對(duì)你們有用呢?
patchelf命令
https://blog.csdn.net/juluwangriyue/article/details/108617283文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-789602.html
更新libstdc++.so版本
https://blog.csdn.net/bohrium/article/details/126546521
https://blog.csdn.net/jaber_chen/article/details/124715913
https://blog.csdn.net/qq_41905051/article/details/122707137文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-789602.html
到了這里,關(guān)于ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.29‘ not found的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!