/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.9' not found

本文介绍了当遇到GLIBCXX版本不匹配错误时的几种解决方案,包括修改链接库路径、更新GCC安装配置等方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题:

./a.out: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by /home/ycai/x10/stdlib/lib/libx10.so)


可能的解决方案:

第一种方案:

执行strings /usr/lib64/libstdc++.so.6 | grep GLIBC


返回结果没有GLIBCXX_3.4.9

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
GLIBC_2.0
GLIBC_2.3
GLIBC_2.4
GLIBC_2.3.4
GLIBC_2.1
GLIBC_2.1.3
GLIBC_2.2
GLIBCXX_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH

执行ls -l  /usr/lib64/libstdc++.so.6
发现/usr/lib64/libstdc++.so.6 -> /usr/lib/libstdc++.so.6.0.8,其实这里需要使用libstdc++.so.6.0.10
从网上下载这个文件,然后把/usr/lib/libstdc++.so.6 -> /usr/lib/libstdc++.so.6.0.8(rm -rf /usr/lib/libstdc++.so.6 )软链接删除,重新做
ln -s /usr/lib/libstdc++.so.6.0.10  /usr/lib64/libstdc++.so.6


补充这个解决方案是网上找的,这个解决方案生效的前提是要有权限。我是在集群上使用的,没有管理员权限,所以无法删除上面所说软连接。


第二种方案(此种方案成功)

The problem is that you built your new GCC incorrectly: on Linux you should use

./configure --prefix=/usr

The default installation prefix is /usr/local, which is why make install put gcc and g++binaries into /usr/local/bin, etc.

What's happening to you now is that you compile and link using the new (symlinked) GCC 4.2.4, but at runtime your program binds to the old /usr/lib64/libstdc++.so.6 (version 6.0.8, instead of required 6.0.9). You can confirm that by running ldd build/ALPHA_SE/m5.opt: you should see that it uses /usr/lib64/libstdc++.so.6.

There are several fixes you could do.

env LD_LIBRARY_PATH=/usr/local/lib64 ldd build/ALPHA_SE/m5.opt

should show you that setting LD_LIBRARY_PATH is sufficient to redirect the binary to correct library, and

LD_LIBRARY_PATH=/usr/local/lib64 build/ALPHA_SE/m5.opt

should just run. You could "bake" this path into m5.opt binary by relinking it with -Wl,-rpath=/usr/local/lib64.

关键点是:

输入

env LD_LIBRARY_PATH=/home/ycai/opt/gcc-4.5.1/lib64 ldd ./a.out 

运行后,就发现那个连接对了。

参考上面对的链接,将/home/ycai/opt/gcc-4.5.1/lib64等路径加入到LD_LIBRARY_PATH里面。
LD_LIBRARY_PATH=/home/ycai/opt/gcc-4.5.1/lib64 ldd ./a.out


第三种方案:

cd /usr/lib64 && mv libstdc++.so.6 libstdc++.so.6_bak &&
ln -s /home/ycai/opt/gcc-4.5.1/lib64/libstdc++.so.6

这种方案可能也需要一定的权限


第四种方案:

   重新配置。reconfigure the new GCC with --prefix=/usr, and then make all install.

   详见:http://stackoverflow.com/questions/1952146/glibcxx-3-4-9-not-found


五:

可以参考此文章:http://blog.youkuaiyun.com/wangxmin2005/article/details/8211077

如果有管理员权限,根据此文章应该是可以解决问题的。(PS:我的问题就是没有权限~~~~(>_<)~~~~ )


参考文章:

http://blog.youkuaiyun.com/atower_boy/article/details/6268838

http://jamesbond0479.blog.163.com/blog/static/24147582010712104140781/

http://stackoverflow.com/questions/1952146/glibcxx-3-4-9-not-found


引用\[1\]:查看一下报错环境位置的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 。 引用\[2\]:拷贝高版本的libstdc++.so到/usr/lib64目录下,并重新建立软连接 cp /root/anaconda3/envs/faceswap/lib/libstdc++.so.6.0.31 /usr/lib64/ ln -sf /usr/lib64/libstdc++.so.6.0.31 /usr/lib64/libstdc++.so.6 。 引用\[3\]:发现确实没有 version `GLIBCXX_3.4.29’ (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 原因分析: 。 问题:/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.32&#39; not found 回答: 这个问题的原因是在报错环境中找不到`GLIBCXX_3.4.32`版本的`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`查看报错环境中的`libstdc++.so.6`的情况。然后,根据引用\[2\]的建议,将高版本的`libstdc++.so`拷贝到`/usr/lib64`目录下,并重新建立软连接。具体命令为`cp /root/anaconda3/envs/faceswap/lib/libstdc++.so.6.0.31 /usr/lib64/`和`ln -sf /usr/lib64/libstdc++.so.6.0.31 /usr/lib64/libstdc++.so.6`。最后,再次检查`libstdc++.so.6`的版本,确保已经包含了`GLIBCXX_3.4.32`。 #### 引用[.reference_title] - *1* *3* [集群报错 /lib64/libstdc++.so.6: version `GLIBCXX_3.4.29not found](https://blog.csdn.net/yirui50/article/details/125462458)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [conda环境下“/lib64/libstdc++.so.6: version `GLIBCXX_3.4.20‘ not found”问题解决](https://blog.csdn.net/lsb2002/article/details/131456857)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值