解决CentOS使用gmake时出现version GLIBCXX_3.4.26 not found问题

解决CentOS使用gmake时出现version `GLIBCXX_3.4.26’ not found问题

在对camke使用gamke时出现了以下问题
在这里插入图片描述

问题分析

因为安装的gcc版本比较高,生成的动态库没有替换老版本gcc的动态库,GLIBCXX中的版本比较低,将gcc最新版本的动态库替换系统中老版本的动态库即可。

解决方法

  1. 根据提示查看对应的路径
    strings /usr/lib64/libstdc++.so.6|grep GLIBCXX
    发现缺少需要的3.4.26,3.4.20,3.4.21版本
    在这里插入图片描述
  2. 查看当前系统中所有libstdc++.so的位置,发现当前最新的动态库为libstdc++.so.6.0.27
    sudo find / -name "libstdc++.so*"
    在这里插入图片描述
  3. 将新版本动态库复制到/usr/lib64中(注意自己libstdc++.so.6.0.xx的路径)
    cp /home/gcc-5.2.0/gcc-temp/stage1-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.27 /usr/lib64
  4. 删除老版本动态库(以下操作在/usr/lib64目录下)
    sudo rm -rf libstdc++.so.6
  5. 建立新链接(权限不够加上sudo)
    ln -s libstdc++.so.6.0.27 libstdc++.so.6
  6. 再次查看当前动态库版本
    strings /usr/lib64/libstdc++.so.6 | grep GLIBC
    在这里插入图片描述
<think>好的,用户遇到了GLIBCXX_3.4.30未找到的错误,需要解决这个问题。首先,我得回忆一下GLIBCXX版本问题的一般解决方法。根据之前的经验和参考的引用内容,通常这种情况是因为系统中的libstdc++.so.6版本过旧,不支持所需的GLIBCXX版本。 首先,按照引用[1]中的方法,用户可能已经检查了系统现有的GLIBCXX版本,发现确实没有3.4.30。接下来,需要升级libstdc++.so.6。根据引用[2]和[3]提到的解决方案,通常需要安装更新的GCC版本,或者直接更新libstdc++。 可能的步骤包括:检查当前GCC版本,安装更高版本的GCC,然后替换或更新libstdc++.so.6的符号链接。需要注意的是,直接替换系统可能有风险,需要谨慎操作。另外,有些情况可能需要手动下载新版本的文件,或者通过添加软件源来安装更新的开发工具包。 此外,用户可能没有安装正确的软件源,导致无法通过包管理器直接更新。这候可能需要从官方源下载GCC的源码编译,或者找到包含所需libstdc++版本的预编译包。编译GCC可能会比较复杂,需要处理依赖关系,但能确保得到最新版本的。 还要考虑到系统兼容性的问题,确保新安装的不会影响其他依赖旧版本的应用程序。通常建议在更新前备份原有,或者在测试环境中进行操作。 总结下来,解决步骤应该是:确认当前版本,安装更新的GCC或libstdc++,更新符号链接,验证新版本是否存在。同,提供相关的问题供用户进一步排查,比如如何检查GCC版本,如何安全地替换文件等。</think>### 解决`GLIBCXX_3.4.30 not found`错误的步骤 1. **验证当前GLIBCXX版本** - 执行以下命令查看已支持的版本: ```bash strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX ``` 如果输出中没有`GLIBCXX_3.4.30`,则需升级文件[^1]。 2. **安装高版本GCC或libstdc++** - **方法1:通过软件源升级** - 添加支持更高版本的软件源(如Ubuntu Toolchain PPA): ```bash sudo add-apt-repository ppa:ubuntu-toolchain-r/test sudo apt update sudo apt install gcc-11 g++-11 # 根据需求选择版本(如gcc-12) ``` - 更新后重新检查版本。 - **方法2:手动编译安装GCC** ```bash wget https://ftp.gnu.org/gnu/gcc/gcc-12.3.0/gcc-12.3.0.tar.gz tar -xvf gcc-12.3.0.tar.gz cd gcc-12.3.0 ./contrib/download_prerequisites mkdir build && cd build ../configure --disable-multilib --enable-languages=c,c++ make -j$(nproc) sudo make install ``` 编译完成后,新的`libstdc++.so.6`会默认安装在`/usr/local/lib64/`。 3. **更新文件链接** - 找到新编译的文件(例如`/usr/local/lib64/libstdc++.so.6.0.30`): ```bash sudo cp /usr/local/lib64/libstdc++.so.6* /usr/lib/x86_64-linux-gnu/ sudo rm /usr/lib/x86_64-linux-gnu/libstdc++.so.6 sudo ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30 /usr/lib/x86_64-linux-gnu/libstdc++.so.6 ``` - 执行`ldconfig`刷新动态链接缓存: ```bash sudo ldconfig ``` 4. **验证更新结果** ```bash strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX_3.4.30 ``` 若输出中包含`GLIBCXX_3.4.30`,则问题解决[^3]。 --- ### 相关问题 1. 如何查看当前系统安装的GCC版本? 2. 升级GLIBCXX是否会影响其他依赖旧版本的程序? 3. 如何安全地回滚到旧版本的libstdc++? --- **注意事项** - 直接替换系统存在风险,建议在操作前备份原文件。 - 若通过编译GCC安装新版本,可能需调整环境变量`LD_LIBRARY_PATH`指向新路径。 - 某些Linux发行版(如CentOS)可通过`devtoolset`工具链更新GCC,避免影响系统默认。 : 引用[1] [^2]: 引用[2] : 引用[3]
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值