解决usrlib64libstdc++.so.6和lib64libc.so.6版本过低问题

### 解决usr/lib64/libstdc++.so.6 和 lib64/libc.so.6 版本过低的问题 在进行系统环境搭建时,尤其是安装像 MySQL 这样的大型软件包时,可能会遇到库文件版本不兼容的问题。本文将详细介绍如何解决 CentOS 7.0 下 MySQL 5.7.14 在启动过程中遇到的 `/usr/lib64/libstdc++.so.6` 和 `/lib64/libc.so.6` 版本过低的问题。 #### 一、问题描述 当尝试在 CentOS 7.0 上运行 MySQL 5.7.14 的 `mysqld` 命令时,会遇到以下错误: ``` ./bin/mysqld: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by ./bin/mysqld) ./bin/mysqld: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by ./bin/mysqld) ``` 这表明当前系统中的 `libstdc++.so.6` 和 `libc.so.6` 的版本不足以支持 MySQL 5.7.14 的运行需求。 #### 二、分析问题 1. **查看当前版本**: - 首先检查当前系统中的 `libstdc++.so.6` 支持的 GLIBCXX 版本: ```bash [root@haughty mysql] strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX ``` - 结果显示最高版本为 `GLIBCXX_3.4.13`,而 MySQL 5.7.14 需要 `GLIBCXX_3.4.15`。 - 同样,检查 `libc.so.6` 的 GLIBC 版本,结果显示最高版本为 `GLIBC_2.12`,而 MySQL 5.7.14 需要 `GLIBC_2.14`。 2. **确认原因**:由于系统中的库文件版本较低,不满足 MySQL 5.7.14 的需求。 #### 三、解决方案 ##### 1. 更新 libstdc++.so.6 1. **下载新版库**: - 下载更高版本的 `libstdc++.so.6` 库,例如 Debian 的 GCC 4.7 中的 `libstdc++.so.6`(版本号为 4.7.2)。 ```bash [root@haughty software] wget http://ftp.de.debian.org/debian/pool/main/g/gcc-4.7/libstdc++6_4.7.2-5_amd64.deb ``` 2. **提取库文件**: - 使用 `ar` 和 `tar` 命令提取 `.deb` 包中的库文件。 ```bash [root@haughty software] ar -x libstdc++6_4.7.2-5_amd64.deb [root@haughty software] tar -zxvf data.tar.gz ``` 3. **替换旧版库**: - 将提取出的 `libstdc++.so.6.0.17` 复制到系统的 `/usr/lib64/` 目录下。 ```bash [root@haughty software] cp usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.17 /usr/lib64/ ``` - 删除旧版本的 `libstdc++.so.6` 并创建新的符号链接指向新版本。 ```bash [root@haughty software] rm -rf /usr/lib64/libstdc++.so.6 [root@haughty software] ln -s /usr/lib64/libstdc++.so.6.0.17 /usr/lib64/libstdc++.so.6 ``` 4. **验证更新结果**: - 再次检查版本信息确认是否成功更新。 ```bash [root@haughty software] strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX ``` ##### 2. 更新 libc.so.6 1. **下载新版库**: - 下载更高版本的 `libc.so.6` 库,例如 glibc 2.14 版本。 ```bash [root@haughty software] wget http://ftp.gnu.org/gnu/glibc/glibc-2.14.tar.gz ``` 2. **编译安装**: - 解压并进入 glibc-2.14 目录。 ```bash [root@haughty software] tar -zxvf glibc-2.14.tar.gz [root@haughty software] cd glibc-2.14 ``` - 配置并编译安装。注意:实际操作中可能遇到配置错误,需要根据具体错误提示进行解决。 ```bash [root@haughty glibc-2.14] ./configure --prefix=/usr/glibc-2.14 ``` #### 四、注意事项 1. **备份原库文件**:在替换之前最好备份原有的库文件,以免出现问题后无法恢复。 2. **环境变量检查**:确保修改后的库文件能够被正确加载。可以通过设置或修改 `LD_LIBRARY_PATH` 环境变量来确保新版本的库文件被优先加载。 3. **依赖性检查**:更新库文件可能会影响其他依赖于这些库文件的应用程序。因此,在更新前建议仔细检查所有相关的依赖关系。 通过上述步骤,可以有效地解决 CentOS 7.0 下 MySQL 5.7.14 在启动过程中遇到的 `libstdc++.so.6` 和 `libc.so.6` 版本过低的问题。

















/usr/local/mysql/bin/mysqld --version
出现如下问题:
./bin/mysqld: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by ./bin/mysqld)
./bin/mysqld: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by ./bin/mysqld)
初步分析,出现这种问题就是因为编译库的编译器和编译当前程序的编译器版本是不一样的,在具体一点就是因为,当前程序的编译器的版本是比较低的,只要升级一下就可以了。
/usr/lib64/libstdc++.so.6升级
可以用如下命令查看一下当前GCC版本:
[root@haughty mysql] strings /usr/lib64/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
GLIBCXX_DEBUG_MESSAGE_LENGTH
并没有动态库中要求的GCC版本 “GLIBCXX_3.4.15”,所以需要进行升级一下我们的GCC版本

- 全栈仁波切2019-07-30不能用,差评
- killervv2018-09-14不能用啊,一替换就崩了lcy209582019-03-18请注意看这个笔记,因为有的步骤是错误的,我在后面是有备注的lcy209582019-03-18这个适用于centos6的,7的也可以,这个我自己使用过肯定是没问题的,我不知道您如何操作的

- 粉丝: 0
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 单片机数字温计毕业设计.doc
- th张泽java课程设计方案课程设计方案报告正文.doc
- MCS单片机课程设计单片机步进电机控制系统.doc
- PHP办公用品网上商城的设计与实现说明书(含源程序).doc
- 打造健康医疗大数据国家队.docx
- 办公软件应用(中级)试题汇编(第1套).doc
- 客户关系管理系统数据库设计.doc
- 高新兴通信监控(动环监控)系统解决方案.doc
- 浅析大数据时代我国会计信息化的应用及展望.docx
- 网络经济学案例分析.doc
- PLC五层电梯控制系统设计方案.doc
- 公路工程项目管理关键问题分析与创新措施.docx
- 员工信息管理系统设计与实现【数据库】.doc
- (源码)基于Arduino的WS2812B二进制时钟项目.zip
- WEB数据库原理与应用-学习情境3(4).doc
- 动力能源保障系统安全日常保障机制的探讨.docx


