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