集群报错 /lib64/libstdc++.so.6: version `GLIBCXX_3.4.29‘ not found

集群报错:ImportError: /lib64/libstdc++.so.6: version GLIBCXX_3.4.29' not found</p> <p><code>集群报上述错误,没有root权限,不想麻烦管理员的解决办法:</code></p> <p>问题描述</p> <p><code>ImportError: /lib64/libstdc++.so.6: version GLIBCXX_3.4.29' not found</code></p> <p>错误如下:</p> <pre><code class="language-python"> from mmcv.ops import sigmoid_focal_loss as _sigmoid_focal_loss File "/home/xxx/tools/miniconda3/envs/open-mmlab/lib/python3.7/site-packages/mmcv/ops/__init__.py", line 2, in <module> from .assign_score_withk import assign_score_withk File "/home/xxx/tools/miniconda3/envs/open-mmlab/lib/python3.7/site-packages/mmcv/ops/assign_score_withk.py", line 6, in <module> '_ext', ['assign_score_withk_forward', 'assign_score_withk_backward']) File "/home/xxx/tools/miniconda3/envs/open-mmlab/lib/python3.7/site-packages/mmcv/utils/ext_loader.py", line 13, in load_ext ext = importlib.import_module('mmcv.' + name) File "/home/xxx/tools/miniconda3/envs/open-mmlab/lib/python3.7/importlib/__init__.py", line 127, in import_module return _bootstrap._gcd_import(name[level:], package, level) ImportError: /lib64/libstdc++.so.6: version GLIBCXX_3.4.29′ not found (required by /home/xxx/tools/miniconda3/envs/open-mmlab/lib/python3.7/site-packages/mmcv/_ext.cpython-37m-x86_64-linux-gnu.so)

确认报错

查看一下报错环境位置的libstdc++.so.6情况

strings /home/xxx/tools/miniconda3/envs/open-mmlab/lib/python3.7/site-packages/mmcv/_ext.cpython-37m-x86_64-linux-gnu.so | grep GLIBC

发现确实没有 version GLIBCXX_3.4.29'</p> <pre><code class="language-py">(open-mmlab) [xxx@gpu07 mmsegmentation]$ strings /home/xxx/tools/miniconda3/envs/open-mmlab/lib/python3.7/site-packages/mmcv/_ext.cpython-37m-x86_64-linux-gnu.so | grep GLIBC GLIBC_2.2.5 GLIBC_2.14 GLIBCXX_3.4.18 GLIBCXX_3.4.26 GLIBCXX_3.4.9 GLIBCXX_3.4 </code></pre> <p>原因分析:</p> <blockquote> <p>因为安装的gcc版本比较高,生成的动态库没有替换老版本gcc的动态库,GLIBCXX中的版本比较低</p> </blockquote> <p>解决方案:</p> <blockquote> <p>将gcc最新版本的动态库替换系统中老版本的动态库</p> </blockquote> <ol> <li>如果不想麻烦管理员,先找找其他环境中的 libstdc++.so.6文件,看有没有自己需要的</li> </ol> <pre><code class="language-py">find /home/xxx/tools/miniconda3 -name libstdc++.so.6 /home/xxx/tools/miniconda3/pkgs/libstdcxx-ng-9.3.0-hd4cf53a_17/lib/libstdc++.so.6 /home/xxx/tools/miniconda3/pkgs/libstdcxx-ng-11.2.0-he4da1e4_16/lib/libstdc++.so.6 /home/xxx/tools/miniconda3/pkgs/libstdcxx-ng-11.2.0-h1234567_0/lib/libstdc++.so.6 /home/xxx/tools/miniconda3/pkgs/libstdcxx-ng-12.1.0-ha89aaad_16/lib/libstdc++.so.6 /home/xxx/tools/miniconda3/lib/libstdc++.so.6 /home/xxx/tools/miniconda3/envs/i2v/lib/libstdc++.so.6 /home/xxx/tools/miniconda3/envs/pytorch1.2/lib/libstdc++.so.6 </code></pre> <ol> <li>用以下命令查看上述任意一个</li> </ol> <pre><code class="language-py">strings /home/xxx/tools/miniconda3/envs/i2v/lib/libstdc++.so.6 | grep GLIBC </code></pre> <p>其中有环境中有报错中要求的版本 <img alt="集群报错 /lib64/libstdc++.so.6: version GLIBCXX_3.4.29‘ not found” src=”https://johngo-pic.oss-cn-beijing.aliyuncs.com/articles/20230619/0c8af52dac4c44428e3b143ed1f1c282.png#pic_center” />
3. 拷贝需要的版本
然后只需要cd到报错位置,将libstdc++.so.6删除,将metage环境下指定位置(指定位置是通过前面的find命令找的,一般在 ~/miniconda3/envs/环境名/lib/ 下就有)的libstdc++.so.6拷贝过来就行了;


rm -rf /home/xxx/tools/miniconda3/envs/open-mmlab/lib/python3.7/site-packages/mmcv/_ext.cpython-37m-x86_64-linux-gnu.so

cd /home/xxx/tools/miniconda3/envs/open-mmlab/lib/python3.7/site-packages/mmcv/

cp /home/xxx/tools/miniconda3/envs/i2v/lib/libstdc++.so.6 ./

strings /home/xxx/tools/miniconda3/envs/open-mmlab/lib/python3.7/site-packages/mmcv/_ext.cpython-37m-x86_64-linux-gnu.so.6  | grep GLIBC

如下图

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/669439/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球