MENU

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
    
返回文章列表 文章二维码 打赏
本页链接的二维码
打赏二维码