部署mysql的中间出现问题/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21‘ not found

这篇博客介绍了如何处理Linux环境下MySQL启动时遇到的libstdc++.so.6依赖问题。首先检查软连接是否指向正确版本,删除旧链接,再创建指向高版本库的新软连接。如果无法联网,需要手动下载libstdc++.so.6.0.24文件并上传至服务器。最后重启MySQL服务即可解决问题。

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

出现此类的问题怎么解决

首先先去机器上去看下/usr/lib64中去查看 

首先确定软连接的是高版本的libstdc++.so.6.0.24 而不是libstdc++.so.6.0.19

不确定的话直接删除软连接

rm -rf libstdc++.so.6

重新创建新的软连接

ln -s  libstdc++.so.6.0.24 libstdc++.so.6

然后去重启MySQL数据库就不提示了

由于我的环境是禁止链接外网的所以只能离线安装,需要自己先把这个包下下来上传到机器。

 

<think>我们正在解决CentOS 7.9上运行Ollama时出现的`libstdc++.so.6: version &#39;GLIBCXX_3.4.25&#39; not found`错误。根据引用[1]和[2]中的信息,CentOS 7默认的libstdc++版本较低,缺少所需的GLIBCXX版本。我们需要升级libstdc++库。 在CentOS 7中,我们可以通过安装高版本的GCC来获得更新的libstdc++库。由于CentOS 7官方仓库的GCC版本较低(4.8.5),我们需要使用第三方仓库(如SCL)来安装较新的GCC。 以下是具体步骤: ### 1. 验证当前GLIBCXX版本 首先,检查当前系统支持的GLIBCXX版本: ```bash strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX ``` 输出应该类似于引用[2],最高版本可能只到GLIBCXX_3.4.19,而我们需要3.4.25。 ### 2. 安装Software Collections (SCL)仓库 SCL仓库提供了较新的软件版本,同时不会替换系统默认的软件包。 ```bash sudo yum install centos-release-scl ``` ### 3. 安装高版本GCC 安装GCC 8(或更高版本,例如GCC 9或10),因为GCC 8提供了GLIBCXX_3.4.25。 ```bash sudo yum install devtoolset-8-gcc devtoolset-8-gcc-c++ devtoolset-8-binutils ``` 注意:`devtoolset-8`对应GCC 8。如果需要其他版本,可以安装`devtoolset-9`(GCC9)或`devtoolset-10`(GCC10)。 ### 4. 启用高版本GCC环境 安装后,我们可以临时启用该环境: ```bash scl enable devtoolset-8 bash ``` 或者,为了永久生效,可以将以下内容添加到`~/.bashrc`中: ```bash source /opt/rh/devtoolset-8/enable ``` ### 5. 验证新版本GLIBCXX 启用新环境后,检查GLIBCXX版本: ```bash strings /opt/rh/devtoolset-8/root/usr/lib64/libstdc++.so.6 | grep GLIBCXX ``` 应该会看到GLIBCXX_3.4.25或更高版本。 ### 6. 更新动态库链接(可选) 虽然启用devtoolset环境后,新打开的终端会使用新的库,但有时应用程序可能仍然使用系统默认的库。为了确保系统范围内使用新库,我们可以将新库链接到系统库目录(谨慎操作): ```bash # 备份原库 sudo cp /usr/lib64/libstdc++.so.6 /usr/lib64/libstdc++.so.6.bak # 删除原符号链接 sudo rm /usr/lib64/libstdc++.so.6 # 创建新链接(指向新版本的库) sudo ln -s /opt/rh/devtoolset-8/root/usr/lib64/libstdc++.so.6.0.25 /usr/lib64/libstdc++.so.6 ``` 注意:这里的具体路径和版本号可能因安装的devtoolset版本而略有不同,请根据实际情况调整。 ### 7. 验证系统级更新 在未启用devtoolset的终端中,检查: ```bash strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX ``` 应该能看到GLIBCXX_3.4.25。 ### 8. 重启Ollama 完成上述步骤后,重启Ollama服务或重新运行Ollama命令。 ### 注意事项 - 直接替换系统库存在风险,可能导致其他依赖旧版本库的应用程序无法运行。建议在测试环境中操作,并确保备份原库。 - 如果Ollama是通过Docker运行的,则需要在基础镜像中安装高版本的libstdc++,或者使用已经包含高版本库的镜像。 ### 备选方案:编译安装GCC 如果不想使用SCL仓库,也可以从源码编译安装GCC,但过程较为复杂。 ### 相关问题 1. 如何在CentOS 7上升级GLIBC到更高版本? 2. 除了GLIBCXX,还有哪些库版本问题可能导致应用程序无法运行? 3. 使用SCL仓库安装的软件包如何管理? 4. 如何在不影响系统稳定性的前提下解决库版本冲突? 引用说明: [^1]: 引用[1]中提到了CentOS 7上运行node或yarn时因缺少GLIBCXX_3.4.21和GLIBC_2.27等版本而报错,说明CentOS 7默认库版本较低。 [^2]: 引用[2]中展示了系统支持的GLIBCXX版本列表,最高只到3.4.19,因此需要升级。 [^3]: 引用[3]中提到了安装MySQL8时遇到类似问题,说明这类问题在安装新软件时常见。</think>### 解决 CentOS 7.9 上 Ollama 的 `GLIBCXX_3.4.25 not found` 错误 CentOS 7.9 默认的 GLIBCXX 版本较低(最高仅支持到 GLIBCXX_3.4.19[^2]),而 Ollama 需要 GLIBCXX_3.4.25。以下是安全可靠的解决方案: --- ### 方法一:通过 SCL 安装高版本 GCC(推荐) ```bash # 1. 安装 Software Collections 仓库 sudo yum install centos-release-scl -y # 2. 安装 GCC 8+(包含 GLIBCXX_3.4.25) sudo yum install devtoolset-8-gcc devtoolset-8-gcc-c++ -y # 3. 启用新环境 scl enable devtoolset-8 bash # 4. 验证新版本 strings /opt/rh/devtoolset-8/root/usr/lib64/libstdc++.so.6 | grep GLIBCXX | tail -n 3 # 应输出:GLIBCXX_3.4.25 ``` --- ### 方法二:永久更新系统库(谨慎操作) ```bash # 1. 安装 GCC 8 sudo yum install devtoolset-8 -y # 2. 备份原库 sudo cp /usr/lib64/libstdc++.so.6 /usr/lib64/libstdc++.so.6.bak # 3. 链接新库 sudo ln -sf /opt/rh/devtoolset-8/root/usr/lib64/libstdc++.so.6.0.25 /usr/lib64/libstdc++.so.6 # 4. 验证更新 strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX | tail -n 3 ``` --- ### 方法三:容器化解决方案(最安全) ```dockerfile # Dockerfile FROM centos:7.9 # 安装依赖 RUN yum install -y centos-release-scl && \ yum install -y devtoolset-8 # 设置环境变量 ENV PATH=/opt/rh/devtoolset-8/root/usr/bin:$PATH ENV LD_LIBRARY_PATH=/opt/rh/devtoolset-8/root/usr/lib64:$LD_LIBRARY_PATH # 安装 Ollama RUN curl -fsSL https://ollama.com/install.sh | sh ``` 构建并运行: ```bash docker build -t ollama-centos7 . docker run -it --rm ollama-centos7 ollama run llama3 ``` --- ### 验证解决 运行后应不再报错: ```bash ollama run llama3 # 应正常启动模型 ``` > **关键提示**: > 1. 方法三最安全,避免系统库污染 > 2. 操作前务必备份:`sudo cp /usr/lib64/libstdc++.so.6 ~/libstdc++.so.6.bak` > 3. 不要从外部下载`.so`文件替换,会导致ABI不兼容[^1] > 4. CentOS 7 最高支持 GCC 10(devtoolset-10),如需更高版本需升级系统
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值