GCC4.8使用regex坑
背景
最近在写C++的webserver,其中的有一块需要用到正则表达式,而系统centos7自带的GCC编译器的版本gcc 版本 4.8.5,在make编译时候出现std::regex_error::regex_error
,一开始怀疑正则问题,使用网页版的正则表达式工具review确实是正确的,后面有在思考是否为编译器版本问题,强大的搜索引擎告诉我确实为版本的原因,regex标准库需要GCC大于等于4.9版本。
解决方法
- 采用Boost库中regex
- 升级GCC版本(博主直接升级到GCC8)
# 升级方法还是比较简单 yum install centos-release-scl scl-utils-build # scl源安装 yum install -y devtoolset-8-toolchain # 安装gcc gcc-c++等 scl enable devtoolset-8 bash # 设置使用gcc8(此命令为临时,退出shell后又恢复系统自带版本) echo "source /opt/rh/devtoolset-8/enable" >>/etc/profile # 设置为默认GCC编译器 gcc --version