/lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found问题解决方法

阅读数:584 评论数:0

跳转到新版页面

分类

Linux

正文

一、概述

在linux进行c\c++的开发时,常会用到两个库:

libc.so  这是标准C库(ANSI C)

libstdc++.so  标准C++库(包含STL)

1、libc

它是Linux下原来标准C库,后来逐渐被glibc取代(GNU C Library),主流的linux操作系统用的基本都是glibc。

2、glibc

是Linux系统中最底层的API,最主要的功能就是对系统调用的封装,另外还包含一些常用的上层应用函数,如malloc,signal等。

3、eglibc

e是embedded,是为了更好的支持嵌入式架构,它的二进制是兼容glibc的,也就是如果你的代码之前依赖eglibc库,那么换成glibc后也不需要重新编译,ubuntu系统用的就是eglibc。

4、glib

glib跟glibc并没有关系,glib也是一个c程序库,不过比较轻量级,glib将C语言中的数据类型统一封装成自已的数据类型,提供了C语言常用的数据结构的定义以及处理函数,所以glib是可移值的,即可以在Linux,也可以在windows下使用。

5、libc++/libstdc++

两个都是c++标准库,libc++是针对clang编译器重写的c++标准库,libstdc++是基于gcc。

6、libstdc++,glibc的关系

libstdc++与gcc是捆绑在一起的,也就是说安装了gcc,libstdc++也会安装上。

相比glibc,libstdc++虽然提供了c++程序的标准库,但它并不与内核打交道。对于系统级别的事件,libstdc++首选是会与glibc交互,才能和内核通信。

7、g++作用

(1)后缀为.c的

gcc把它当作是c程序,g++当作是c++程序。

(2)后缀为.cpp的

两者都会认为是c++程序。

(3)编译

在编译阶段,g++会调用gcc,对于c++代码,两者是等价的。

(4)链接

g++能自动链接库,gcc不能自动和c++程序使用库链接。

二、错误原因:

编译gcc升级后,标准库还是旧库引起的。

三、解决方法:

1、查看本地GLIBCXX版本

strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX

linux上strings用来打印文件中可打印的字符。

2、查看哪个软件包包含此库

yum provides libstdc++.so.6

yum provides可以查询到你要使用的命令包含在哪个包里

3、使用yum install即可安装此软件包

yum install libstdc++-4.8.5-11.el7.i686

4、更新libstdc++.so.6为新版本

(1)从路径/usr/local/lib64拷贝文件libstdc++.so.6.0.20(或更高版本)到路径/usr/lib64

(2)删除/usr/lib64原来的软链接libstdc++.so.6

(3)在路径/usr/lib64重新建立软链接ln -s libstdc++.so.6.0.20 libstdc++.so.6




相关推荐

gcc gnu collect compiler,是一组编译工具的总称,它主要完成的工作任务是“预处理”和“编译”,以及提供了与

一、概述 yum是yellow dog updater,modified的简称,是rpm软件包管理器,用python写成,可以安装、移除、升级rpm包,检查并自动解决依赖性。 yum使用的软件仓库除了

# download source code from http://www.mplayerhq.hu/design7/dload.html & extract wget -cS http://www

一、基本格式 yum [option] [查询工作项目] [相关参数] #其中~代表软件包 #安装软件: yum install ~ #删除软件: yum remove ~ # 安装本地rpm

一、常用命令 1、添加yum 仓库 yum-config-manager --add-repo repository_url #例如 yum-config-manager --add-repo=htt

一、概述 1、locale中语言环境变量LANG 在Linux中通过locale来设置程序运行的不同语言环境,locale由ANSI C提供支持。locale的命名规则为<语言>_<地区>.<字符集编

一、概述 Centos7 默认使用的是firewall作为防墙。 1.firewalld (防火墙服务) #启动: systemctl start firewalld #关闭: systemctl

以centos7为例 ,以 修改为阿里的yum源 1. 备份本地yum源 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Ba

[root@VM_167_46_centos etc]# free -h total used free shared buff/cache available Mem: 993M 253M 334

1. 进入目录 cd /etc/sysconfig/network-scripts/ <p