You need to enable JavaScript to run this app. 运行dlib库练习代码make阶段报不识别-std=c++17错误,gcc4.8.5是否需升级
优惠活动
大模型
产品
解决方案
定价
更多

运行dlib库练习代码make阶段报不识别-std=c++17错误,gcc4.8.5是否需升级

报错原因判定

你当前的编译报错确实是gcc版本过低导致,必须升级gcc才能解决:

  • 你本机的gcc 4.8.5是Red Hat/CentOS 7类系统自带的默认编译器,最高仅能提供实验性的C11语法支持,完全没有内置对C17编译参数的识别能力,这也是日志中直接抛出unrecognized command line option ‘-std=c++17’错误的核心原因。
  • 不存在修改CMake配置降低C标准绕过报错的可行路径:当前版本的dlib从19.21版本开始已经强制要求最低编译标准为C14,后续高版本直接要求完整的C++17支持,远超过gcc 4.8.5的能力上限。
gcc升级操作步骤(适配你当前的Red Hat系系统环境)

全程不需要替换系统自带的默认gcc,避免破坏系统原有工具链的稳定性:

  • 安装基础开发依赖包,执行命令:yum groupinstall "Development Tools" -y
  • 安装SCL源的基础配置,执行命令:yum install centos-release-scl -y
  • 安装可完整支持C++17的devtoolset-9版本gcc,执行命令:yum install devtoolset-9-gcc devtoolset-9-gcc-c++ -y
  • 激活当前终端会话的高版本gcc环境,执行命令:scl enable devtoolset-9 bash
  • 验证环境是否生效:执行gcc --version,如果输出版本号为9.x系列,就说明配置成功。
后续编译注意事项
  • 一定要删掉之前生成的build目录下的CMake缓存,重新执行cmake配置步骤,不要直接在残留老编译器路径缓存的目录里直接make,否则CMake还是会调用系统自带的老gcc。
  • 每次开新终端会话编译代码时,都需要先执行一次scl enable devtoolset-9 bash激活高版本gcc环境,再走编译流程。

注意:不要直接强制卸载系统自带的gcc 4.8.5替换成高版本,会导致系统自带的依赖编译链路出现连锁故障,devtoolset的临时激活模式是目前最稳妥的升级方式,仅在当前终端会话生效高版本工具链,不改动系统默认配置。

内容的提问来源于stack exchange,提问作者Tain Kim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.05 08:54:01