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
即可解决类似的问题