Linux可执行程序提示GLIBCXX not found邪修办法
1 经典报错
首先贴一张熟悉的令人心碎的提示

2 问题定位
报错提示 /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found,说的是libstdc++.so.6这个c++运行版本太低了。libstdc++.so版本跟gcc是有对应关系的,高版本gcc编译出来的程序,依赖高版本的libstdc++(这里只讨论一般情况哈)。对应关系可以参考gnu官网的https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html
这里稍微截一段

3 解决办法(常规版)
作者以前做其他项目的时候遇到libstdc++版本低这种问题,试过手动编译高级的gcc,拿到里面的运行库,用export LD_LIBRARY_PATH这样的方式试过解决问题。具体可以参考参考前辈文章https://blog.csdn.net/wenroudebaozi/article/details/108521020
4 解决办法(邪修)
如果嫌编译GCC太大工程,可以尝试在带高版本GCC的虚拟环境中找一下对应的libstdc++.so来用。我试过两种环境:
4.1 CentOS的SCL+Devtoolset(走不通)
下图可以看到我在centos7.9(自带gcc是4.8)里用scl安装了gcc11的环境

理论上gcc11对应的的libstdc++是 libstdc++.so.6.29,但是这个虚拟环境并不能找到这个库文件,所以走不通

4.2 Anaconda的GCC环境(✅)
conda create -n gcc12-env -c conda-forge gcc=12 gxx=12 -y # 新建一个虚拟环境,指定gcc
conda activate gcc12-env
然后我们看看有没有找到libstdc++.so.6.30

有了耶!!!开心,那接下来我们就可以试试export LD_LIBRARY_PATH

已经不报libstdc++.so.6的问题了!
