轻量云服务器 适用于建站,轻量化使用
携手合作伙伴,实现业务上的双向合作共赢
我们为您提供全方位的支持与服务,确保您在使用我们的云服务时无忧无虑。
10+年商誉沉淀,深耕中国香港及海外高端资源
libstdc++.so.6)最高仅支持 GLIBCXX_3.4.19。当运行依赖 GLIBCXX_3.4.21 及以上版本的程序时(如高版本 Python 库、C++ 编译的应用),会出现 “GLIBCXX_3.4.21 not found” 错误。
GLIBCXX_3.4.25 及以上),同时更新系统的 libstdc++.so.6 库。以下是详细的分步操作指南:libstdc++ 支持的 GLIBCXX 版本,明确问题是否匹配:gcc --version
# 输出示例(默认版本):
# gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44.el7)
libstdc++ 支持的 GLIBCXX 版本strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX
# 输出中若没有 "GLIBCXX_3.4.21",则确认是版本不足问题
sudo yum install -y centos-release-scl
devtoolset-9-gcc 替换为 devtoolset-8-gcc 等):sudo yum install -y devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
scl enable devtoolset-9 bash
echo "source /opt/rh/devtoolset-9/enable" >> ~/.bashrc
source ~/.bashrc # 立即生效
sudo echo "source /opt/rh/devtoolset-9/enable" >> /etc/profile
source /etc/profile # 立即生效
gcc --version
# 输出示例(成功升级):
# gcc (GCC) 9.3.1 20200408 (Red Hat 9.3.1-2)
sudo yum install -y wget gcc gcc-c++ make bzip2-devel ncurses-devel libmpc-devel mpfr-devel gmp-devel
# 进入临时目录
cd /tmp
# 下载源码(官方镜像链接,可替换为国内镜像如清华源:https://mirrors.tuna.tsinghua.edu.cn/gnu/gcc/)
wget https://ftp.gnu.org/gnu/gcc/gcc-9.5.0/gcc-9.5.0.tar.gz
# 解压源码
tar -zxvf gcc-9.5.0.tar.gz
cd gcc-9.5.0
./contrib/download_prerequisites
/usr/local/gcc-9.5.0(不覆盖系统默认的 /usr/bin/gcc):# 创建编译目录
mkdir -p build && cd build
# 配置参数(--prefix指定安装路径,--enable-languages支持C/C++)
../configure --prefix=/usr/local/gcc-9.5.0 \
--enable-languages=c,c++ \
--disable-multilib \
--enable-threads=posix
-j4 表示 4 线程,根据 CPU 核心数调整):make -j4 # 多线程编译,减少时间
sudo make install # 安装到指定路径
# 方法1:添加环境变量(用户级永久生效)
echo "export PATH=/usr/local/gcc-9.5.0/bin:\$PATH" >> ~/.bashrc
echo "export LD_LIBRARY_PATH=/usr/local/gcc-9.5.0/lib64:\$LD_LIBRARY_PATH" >> ~/.bashrc
source ~/.bashrc # 立即生效
# 方法2:创建软链接(系统级,谨慎使用,避免冲突)
# sudo ln -s /usr/local/gcc-9.5.0/bin/gcc /usr/bin/gcc-9
# sudo ln -s /usr/local/gcc-9.5.0/bin/g++ /usr/bin/g++-9
gcc --version
# 输出示例:gcc (GCC) 9.5.0
GLIBCXX_3.4.21 是否生效libstdc++.so.6 已包含 GLIBCXX_3.4.21:libstdc++.so.6 路径/opt/rh/devtoolset-9/root/usr/lib64/libstdc++.so.6/usr/local/gcc-9.5.0),路径为:/usr/local/gcc-9.5.0/lib64/libstdc++.so.6GLIBCXX 版本# 以SCL的GCC 9为例,替换路径为你的实际路径
strings /opt/rh/devtoolset-9/root/usr/lib64/libstdc++.so.6 | grep GLIBCXX_3.4.21
GLIBCXX_3.4.21,则说明库已支持;libstdc++.so.6 路径引用问题libstdc++.so.6(/usr/lib64/libstdc++.so.6),需通过以下方法让程序使用新库:# 以SCL的GCC 9为例,替换路径为你的实际路径
export LD_LIBRARY_PATH=/opt/rh/devtoolset-9/root/usr/lib64:$LD_LIBRARY_PATH
# 再运行程序,如:./your_program
libstdc++.so.6 软链接(推荐)libstdc++.so.6 软链接指向新 GCC 的 libstdc++.so.6(需先备份旧库,避免系统崩溃):# 1. 备份旧的软链接
sudo mv /usr/lib64/libstdc++.so.6 /usr/lib64/libstdc++.so.6.old
# 2. 创建新的软链接(以SCL的GCC 9为例,替换路径为你的实际路径)
sudo ln -s /opt/rh/devtoolset-9/root/usr/lib64/libstdc++.so.6 /usr/lib64/libstdc++.so.6
# 3. 验证软链接是否正确
ls -l /usr/lib64/libstdc++.so.6
# 输出示例:lrwxrwxrwx. 1 root root 54 Aug 26 10:00 /usr/lib64/libstdc++.so.6 -> /opt/rh/devtoolset-9/root/usr/lib64/libstdc++.so.6
LD_LIBRARY_PATH:# 编辑启动脚本(如your_program.sh)
vi your_program.sh
# 添加以下内容(替换路径为你的实际路径)
LD_LIBRARY_PATH=/opt/rh/devtoolset-9/root/usr/lib64:$LD_LIBRARY_PATH ./your_program
source /opt/rh/devtoolset-9/enable 添加到 ~/.bashrc 或 /etc/profile,并执行 source ~/.bashrc 生效。# 创建2GB交换分区
sudo dd if=/dev/zero of=/swapfile bs=1M count=2048
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
sudo rm /usr/lib64/libstdc++.so.6
sudo ln -s /usr/lib64/libstdc++.so.6.old /usr/lib64/libstdc++.so.6
GLIBCXX 时仍未找到目标版本?gcc-c++,否则 libstdc++ 未更新),并确认软链接指向的是新库路径。GLIBCXX_3.4.21 not found 问题的核心流程:
libstdc++ 版本 → 2. 通过 SCL 或源码升级 GCC 到 9+ → 3. 验证新库支持 GLIBCXX_3.4.21 → 4. 配置程序引用新库路径。
服务热线:
400-9989-596电子邮箱:
ltd@crash.work商务QQ:
3300935300公司地址:
福建省厦门市翔安区金海街道汪厝里39号
QQ群聊
微信群聊