升级gcc版本到10

gcc10支持协程了,准备一下环境试验一下相应的功能

centos自带的gcc版本较低,直接下载gcc源码编译安装

下载gcc

https://ftp.gnu.org/gnu/gcc/gcc-10.3.0/

解压后执行目录中的脚本

./contrib/download_prerequisites

在源码目录同级创建编译目录

mkdir gcc-build-10.3

cd gcc-build-10.3

config/make三步曲

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

make

make install

gcc编译安装完成

用新的gcc编译出现报错

对‘__cxa_throw_bad_array_new_length@CXXABI_1.3.8’未定义的引用

std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::compare(char const*) const@GLIBCXX_3.4.21’未定义的引用

对应的libstdc++链接需要更改

先看下现有的

strings /lib64/libstdc++.so.6 | grep GLIBCXX_3.4.21

strings /lib64/libstdc++.so.6 | grep CXXABI

在笔者的centos上 /lib64是个链接 实际是指出 /usr/lib64

找出所有的libstdc++

find / -name "libstdc++.so*"

笔者的是在这个位置 /usr/local/lib64/libstdc++.so.6.0.28 将此文件拷出 /usr/lib64

删除软链接,链接到新生成的 libstdc++.so.6.0.28

/usr/lib64/libstdc++.so.6

ln -s libstdc++.so.6.0.28 libstdc++.so.6

即可解决类似的问题

猜你喜欢

转载自blog.csdn.net/lsccsl/article/details/128626550