解决/usr/lib/libstdc++.so.6: version `GLIBCXX_3.x.x‘ not found问题

目录

    • 1、查找缺少库版本
    • 2、动态库版本与gcc版本对应关系
    • 3、查找 libstdc++.so.6.0.x 库文件
    • 4、如果libstdc++.so.6.0.21库文件已存在,则按照下面的步骤创建软链接即可
      • 4.1 拷贝、软连接
      • 4.2验证新的 libstdc++.so.6.0.21 库文件是否生效
    • 5、如果libstdc++.so.6.0.21库文件不存在,则需要按照下面的步骤编译新版本的GCC,然后再创建软链接
      • 5.1 下载GCC
      • 5.2 建立软连接
      • 5.3 验证

遇到这个问题的时候是在连接库的时候出现的问题,而且不是在编译的时候出现的,实在运行的时候才 报错,出现这种问题就是因为编译库的编译器和编译当前程序的编译器版本是不一样的,在具体一点就是因为,当前程序的编译器的版本是比较低或较高,只要调整一下就可以了。

1、查找缺少库版本

可以用如下命令查看一下当前GCC版本:

strings /usr/lib/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_FORCE_NEW

如果有动态库中要求的GCC版本 ,例如“GLIBCXX_3.4.14”,就要从已经有该库的位置拷贝到/usr/lib//usr/lib64.

2、动态库版本与gcc版本对应关系

GCC 各版本中 gcc-5.2.0 对应 GLIBCXX_3.4.21 与 libstdc++.so.6.0.21,而 gcc-6.5.0 对应 GLIBCXX_3.4.22 与 libstdc++.so.6.0.22,具体下载的 GCC 版本根据自己的需要进行选择。
对应关系地址:
https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html

对应版本的截图
在这里插入图片描述

3、查找 libstdc++.so.6.0.x 库文件

# 这里以一个为例
# 查找库文件
$ find / -name libstdc++.so.6.0.21
$ /lib/libstdc++.so.6.0.21

4、如果libstdc++.so.6.0.21库文件已存在,则按照下面的步骤创建软链接即可

4.1 拷贝、软连接

$ cp /lib/libstdc++.so.6.0.21 /usr/lib
$ cp /lib/libstdc++.so.6.0.21 /usr/lib64
# 删除旧的链接文件
$ rm -f libstdc++.so.6#分别进入/usr/lib和/usr/lib64目录 创建新的链接文件
$ ln -s libstdc++.so.6.0.21 libstdc++.so.6# 查看最终的libstdc++.so库文件列表
$ ls -al /usr/lib64/libstdc++.so.6*
lrwxrwxrwx. 1 root root       19 312 10:08 /usr/lib64/libstdc++.so.6 -> libstdc++.so.6.0.21
-rwxr-xr-x. 1 root root   991616 1030 14:39 /usr/lib64/libstdc++.so.6.0.19
-rwxr-xr-x. 1 root root 11485880 312 10:01 /usr/lib64/libstdc++.so.6.0.21

4.2验证新的 libstdc++.so.6.0.21 库文件是否生效

如果下面的输出结果中,出现 GLIBCXX_3.4.21,则代表新的 libstdc++.so.6.0.21 库文件生效。

$ strings /usr/lib64/libstdc++.so.6 | grep GLIBC
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_3.4.20
GLIBCXX_3.4.21
GLIBC_2.3
GLIBC_2.2.5
GLIBC_2.14
GLIBC_2.17
GLIBC_2.3.2
GLIBCXX_DEBUG_MESSAGE_LENGTH

5、如果libstdc++.so.6.0.21库文件不存在,则需要按照下面的步骤编译新版本的GCC,然后再创建软链接

5.1 下载GCC

GCC 各版本的下载地址
https://ftp.tsukuba.wide.ad.jp/software/gcc/releases/

# 下载文件(117M)
$ wget http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-5.2.0/gcc-5.2.0.tar.bz2# 解压文件
$ tar -xvf gcc-5.2.0.tar.bz2# 进入解压目录
$ cd gcc-5.2.0# 下载编译gcc所需的依赖文件和库
$ ./contrib/download_prerequisites#********************************#如果./contrib/download_prerequisites执行报错,按下执行#wget http://gcc.gnu.org/pub/gcc/infrastructure/gmp-6.1.0.tar.bz2
#wget http://gcc.gnu.org/pub/gcc/infrastructure/mpfr-3.1.4.tar.bz2
#wget http://gcc.gnu.org/pub/gcc/infrastructure/mpc-1.0.3.tar.gz
#wget http://gcc.gnu.org/pub/gcc/infrastructure/isl-0.16.1.tar.bz2#**********************************# 建立输出目录,用于存放编译时所有产生的中间文件
$ mkdir gcc-temp# 进入输出目录
$ cd gcc-temp# 执行configure配置
$ ../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib# 编译gcc,指定编译使用的线程数为8,编译耗时较长,可能需要几个小时
$ make -j8# 这里为了避免影响系统的稳定性,暂时不执行"make install"和替换系统默认版本的gcc

5.2 建立软连接

# 进入输出目录
$ cd gcc-temp# 查找编译生成libstdc++.so库文件,下面查找到的libstdc++.so、libstdc++.so.6都只是软链接文件,libstdc++.so.6.0.21才是真正编译生成的库文件
$ find . -name "libstdc++.so*"
./prev-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so
./prev-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6
./prev-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.21
./stage1-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so
./stage1-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6
./stage1-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.21
./x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so
./x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6
./x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.21# 拷贝libstdc++.so.6.0.21库文件到lib64目录
$ cp ./x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.21 /usr/lib64# 进入lib64目录
$ cd /usr/lib64# 删除旧的链接文件
$ rm -f libstdc++.so.6# 创建新的链接文件
$ ln -s libstdc++.so.6.0.21 libstdc++.so.6# 查看最终的libstdc++.so库文件列表
$ ls -al /usr/lib64/libstdc++.so.6*
lrwxrwxrwx. 1 root root       19 312 10:08 /usr/lib64/libstdc++.so.6 -> libstdc++.so.6.0.21
-rwxr-xr-x. 1 root root   991616 1030 14:39 /usr/lib64/libstdc++.so.6.0.19
-rwxr-xr-x. 1 root root 11485880 312 10:01 /usr/lib64/libstdc++.so.6.0.21

5.3 验证

见4.2

##【参考】
1、gcc full list of versions :https://ftp.tsukuba.wide.ad.jp/software/gcc/releases/
2、报错信息ImportError: /lib64/libstdc++.so.6: version CXXABI_1.3.9' not found (required by............) https://www.cnblogs.com/jimlau/p/13263052.html 3、 解决/usr/lib/libstdc++.so.6: version GLIBCXX_3.4.14’ not found问题
https://blog.csdn.net/xiaolong2w/article/details/23915171
4、Fix the error: CXXABI 1.3.9 not found on CentOS 7 running DirectAdmin
https://azdigi.com/blog/en/webserver-panel-en/directadmin-en/fix-the-error-cxxabi-1-3-9-not-found-on-centos-7-running-directadmin/
5、Linux解决libstdc++的版本问题
https://blog.csdn.net/u013934914/article/details/104926415
6、libstdc++.so.6: version GLIBCXX_3.4.X 没有找到的解决办法
https://zhuanlan.zhihu.com/p/142718039
7、full version 对应关系:https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html
8、Atlas 900 PoD (Model 9000) 22.0.0 Cluster Delivery Guide
https://support.huawei.com/enterprise/en/doc/EDOC1100289998/326e1dc5/installing-gcc-730

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/191989.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Web前端—移动Web第二天(空间转换、动画、综合案例:全名出游)

版本说明 当前版本号[20231118]。 版本修改说明20231118初版 目录 文章目录 版本说明目录移动 Web 第二天01-空间转换空间转换简介平移视距旋转左手法则rotate3d-了解立体呈现案例-3d导航缩放 02-动画动画实现步骤animation复合属性animation拆分写法案例-走马灯精灵动画多组…

x程无忧sign逆向分析

x程无忧sign逆向分析: 详情页sign: 详情页网站: import base64 # 解码 result base64.b64decode(aHR0cHM6Ly9qb2JzLjUxam9iLmNvbS9ndWFuZ3pob3UvMTUxODU1MTYyLmh0bWw/cz1zb3Vfc291X3NvdWxiJnQ9MF8wJnJlcT0zODQ4NGQxMzc2Zjc4MDY2M2Y1MGY2Y…

数位和相等数对的最大和【教3妹学编程-算法题】数位和相等数对的最大和

3妹:2哥,你有没有看到新闻“18岁父亲为4岁儿子落户现身亲子鉴定” 2哥 : 啥?18岁就当爹啦? 3妹:确切的说是14岁好吧。 2哥 : 哎,想我30了, 还是个单身狗。 3妹:别急啊, 2…

Git命令总结-常用-后续使用频繁的再添加~

Git命令总结-常用 久了不用,有些时候老是会忘记一些命令,多的都记录一下,方便查找 git init 初始化一个Git仓库,执行完git init命令后,会生成一个**.git**目录,该目录包含了资源数据,且只会在…

linux版:TensorRT安装教程

首先安装cuda和cudnn 查看安装的cuda版本 nvidia-smi查看cuda电脑的版本,我的是11.8版本的 nvcc -V查看cudnn版本,在cuda/cuda118/include路径下 cat cudnn_version.h | grep CUDNN_MAJOR -A 2下载TensorRT8.5 GA 下载地址:https://deve…

安装银河麒麟linux系统docker(docker-compose)环境,注意事项(一定能解决,有环境资源)

1:安装docker环境必须使用麒麟的版本如下 2:使用docker-compse up -d启动容器遇到的文件 故障1:如果运行docker-compose up 报“Cannot create redo log files because data files are corrupt or the database was not shut down cleanly after creating the data files”…

Mysql -常见函数

目录 字符串函数 数值函数 日期函数 流程函数 字符串函数 -- 拼接 SELECT CONCAT(Hello, World); -- 小写 SELECT LOWER(Hello); -- 大写 SELECT UPPER(Hello); -- 左填充 SELECT LPAD(01, 5, -); -- 右填充 SELECT RPAD(01, 5, -); -- 去除空格 SELECT TRIM( Hello World )…

Docker安装Zookeeper

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

首发|PS 2024 正式版来袭,内置AI神经滤镜,支持Win/Mac

前言 Photoshop 2024应用程序发布了生成式AI绘图,这是世界上第一个创意和设计工作流程的软件,为用户提供了一种神奇的新工作方式。生成式AI绘图由Adobe Firefly提供支持,Adobe的创意生成AI模型系列。 正文简介 Photoshop 2024正式版 支持…

中国净初级生产力年度合成产品NPP(MYD17A3H.006)

中国净初级生产力年度合成产品NPP(MYD17A3H.006)由航天宏图实验室提供,根据NASA MODIS数据(MYD17A3H.006)通过航天宏图 Smoother计算得到的平滑后NPP产品,解决了影像云雾覆盖、像元异常值等问题。对处理后的…

央企太卷.....来自央企的7个面试题,一个一个生产难题

说在前面 在40岁老架构师尼恩的(50)读者社群中,最近小伙伴,面试央企、美团、京东、阿里、 百度、头条等大厂。 下面是一个小伙伴成功拿到通过了一个央企设计研究院一面面试,现在把面试真题和参考答案收入咱们的宝典。…

2D槽道流

之前看槽道流时,一直无法在二维槽道流里计算出湍流状态,后来了解到二维槽道流需要额外添加随机扰动,但是这个体积力的植入方式一直不知道。而且看稳定性分析中的OS方程的推导,也是基于2d的NS方程,至今还是很疑惑这个问…