0.前言
有时候,我们在编译某些软件是时候会出现解决/usr/lib64/libstdc++.so.6: version `CXXABI_x.x.x’ not found的问题,libstdc++.so.6是gcc下面的一个库;亦或者要求高版本的gcc;可以通过手动升级gcc版本解决此类问题。
1.下载软件包
本文中的所有软件包均可以在https://mirrors.ustc.edu.cn/gnu/下载
gcc 依赖 gmp,mpfr,mpc,所以要先安装这几个,
下载软件包(进入后选择您需要的版本):
gmp:https://mirrors.ustc.edu.cn/gnu/gmp/
mpfr:https://mirrors.ustc.edu.cn/gnu/mpfr/
mpc:https://mirrors.ustc.edu.cn/gnu/mpc/
gcc:https://mirrors.ustc.edu.cn/gnu/gcc/
这里gcc选择5.5.0版本的包gcc-10.4.0.tar.xz;gmp选择6.2.1包gmp-6.2.1.tar.xz;mpfr选择4.1.0版本mpfr-4.1.0.tar.gz;mpc选择1.2.1版本mpc-1.2.1.tar.gz
2.编译依赖
需要按照先编译gmp,再编译mpfr,最后编译mpc的顺序
tar -Jxvf gmp-6.2.1.tar.xz
cd ../gmp-6.2.1
./configure --prefix=/usr/local/gmp
make && make install
tar -zxvf mpfr-4.1.0.tar.gz
cd ../mpfr-4.1.0
./configure --prefix=/usr/local/mpfr --with-gmp=/usr/local/gmp/
make && make install
tar -zxvf mpc-1.2.1.tar.gz
cd ../mpc-1.2.1
./configure --prefix=/usr/local/mpc --with-gmp=/usr/local/gmp/ --with-mpfr=/usr/local/mpfr/
make && make install
编辑 vim /etc/ld.so.conf.d/gccrely.conf文件(vim会自动创建gccrely.conf文件,文件名可随便写),写入以下内容
/usr/local/mpc/lib
/usr/local/mpfr/lib
/usr/local/gmp/lib
完毕后 执行
ldconfig -v
3.编译gcc
解压gcc源码包:
tar -Jxvf gcc-10.4.0.tar.xz
cd gcc-10.4.0
执行预编译:
./configure --prefix=/usr/local/gcc10 \
--with-gmp=/usr/local/gmp/ \
--with-mpfr=/usr/local/mpfr/ \
--with-mpc=/usr/local/mpc/ \
--enable-languages=c,c++ \
--with-system-zlib \
--enable-multilib
其中configure的参数有很多,可以使用./configure --help查看
编译(-j8 是启用8个线程编译,加快编译速度):
make -j8
安装:
make install
4.附
覆盖默认的libstdc++.so.6:
ln -sf /usr/local/gcc10/lib64/libstdc++.so.so.6.0.28 /usr/lib64/libstdc++.so.6
查看CXXABI版本命令:
strings /lib64/libstdc++.so.6 |grep CXXABI
查看GLIBCXX版本命令:
strings /lib64/libstdc++.so.6 |grep GLIBCXX
当遇到编译时libstdc++.so.6版本不匹配的问题,可以通过手动升级GCC来解决。首先从镜像站下载gmp、mpfr、mpc和gcc的软件包,按照gmp→mpfr→mpc的顺序编译安装。然后配置ld.so.conf.d文件,更新动态链接库,并编译安装gcc。最后,通过软连接将新的libstdc++.so.6覆盖到/usr/lib64/下,并检查CXXABI和GLIBCXX版本。
2525

被折叠的 条评论
为什么被折叠?



