/usr/lib64/libstdc++.so.6: version ‘GLIBCXX_3.4.19’ not found问题的解决

虹软3.0SDK版本Linux要求:

文档中开发环境说明: 库依赖GLIBC 2.17及以上

库依赖GLIBCXX 3.4.19及以上

编译器GCC 4.8.2及以上

因服务器是centos6,所以这3个都要更新,非常蛋疼。 GLIBC 更新详细见另外一篇文章,后面2个gcc版本更新和 GLIBCXX 是一起的,但是在gcc更新完成之后,需要重建软连接,不重建是搜不到最新 GLIBCXX 版本的。

但是在调用测试的过程中,却发现报这样的错误。

/usr/lib64/libstdc++.so.6: version 'GLIBCXX_3.4.19' not found

在终端上输入如下命令:strings /usr/lib64/libstdc++.so.6|grep GLIBCXX

得到结果:

GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6  
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH

到13到头了,所以报错啦。

为此,工作主要是两步:

第一步:升级GCC。

下载了最新的6.2.0版本。

wget http://gcc.parentingamerica.com/releases/gcc-6.2.0/gcc-6.2.0.tar.bz2

gcc安装文件下载完成后,执行以下命令解压文件:

tar -xf gcc-6.2.0.tar.bz2

解压完成后,执行以下命令进入工作目录:

cd gcc-6.2.0

执行download_prerequisites脚本,下载gcc依赖文件和库:

./contrib/download_prerequisites

download_prerequisites脚本,会下载安装gcc所需的mpfrgmpmpc文件。

建立一个输出目录,编译时所有生成的中间文件都放到该目录下:

mkdir build

工作目录切换至输出目录,并在其中执行配置和安装:

cd build

执行configure配置安装文件:

../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib

配置完成后,执行以下命令,编译gcc

make -j 6

注意:编译gcc时间较长,可以多启用多个核数来执行。

编译完成后,安装gcc

make install

安装完成后还需要替换系统默认的gcc,执行以下命令,查找6.2版本的安装文件:

第二步:升级GLIBCXX

注意,进入GCC编译输出目录,.libs是隐藏的:build/x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs

用下面的命令查看:

strings libstdc++.so.6.0.22|grep GLIBCXX

一般来讲,里面就有满足需要的GLIBCXX版本了。

然后,把该文件拷贝到了/usr/lib64下.

然后将libstdc++.so.6指向libstdc++.so.6.0.22:

这一步一定要在ROOT权限下执行。

rm -r libstdc++.so.6
rm: remove symbolic link `libstdc++.so.6'? y
ln -s libstdc++.so.6.0.18 libstdc++.so.6

1.本站所有资源收集于互联网,仅用于学习和研究,若用于违法,与本站无关,仅限学习交流请勿用于商业用途。 2.会员在本站下载的VIP素材后,只拥有使用权,著作权归原作者及49资源网所有。 3.VIP素材,未经合法授权,会员不得以任何形式发布、传播、复制、转售该素材,否则一律封号处理。 4.如果素材损害你的权益,请联系客服删除。
49资源网 » /usr/lib64/libstdc++.so.6: version ‘GLIBCXX_3.4.19’ not found问题的解决

发表评论