NVIDIA/Apex安装时遇到 C++编译:unrecognized command line option ‘-std=c++14’ 错误解决

在尝试安装NVIDIA Apex时遇到了C++编译错误:unrecognized command line option ‘-std=c++14’。问题源于旧版gcc(4.8.5)不支持C++14。解决方案包括升级gcc到5.2.0和根据需求更新cmake到3.17.5。

0、问题

编译安装apex的时候,报错C++编译:unrecognized command line option ‘-std=c++14’,后面紧跟着ninja也没有编译成功。发现是编译器版本太老(gcc-4.8.5)外加没有设置CC环境变量。

对于C++14:
    gcc5就可以完全支持,gcc4部分支持,gcc3及以下版本不支持。

既然4.8.5不支持c++14,就重新编译了g++呗。

1、解决的环境版本依赖

原本的环境配置:

操作系统环境是:tlinux2.2-64bit-4.14.105-1.0011

g++版本为:gcc version 4.8.5

cmake版本为:cmake version 2.8.12.2

升级后的环境配置:

g++版本为:gcc version 5.2.0

cmake版本为:cmake version 2.8.12.2

2、具体步骤

1. 升级gcc版本为 5.2.0

//查看默认位置
which gcc
which g++
//下载对应版本
cd /usr/lacal/src
wget http://ftp.gnu.org/gnu/gcc/gcc-5.2.0/gcc-5.2.0.tar.bz2
tar -jxvf gcc-5.2.0.tar.bz2
//进入gcc目录安装
cd gcc-5.2.0
./contrib/download_prerequisites
//编译
mkdir build
cd build
../configure --pref
<think> 嗯,用户遇到了C++编译器报错问题,需要解决"unrecognized command line option"错误。从用户描述看,错误信息包含"-std=c++14"和"-00"两个无法识别的选项,且提到了CP Editor编辑器环境。 用户提供的引用材料很有价值:引用[2]明确指出gcc 9.4版本不支持-std=c++20但支持-std=c++2a,说明编译器版本对C++标准的支持是关键;引用[3][4]展示了CentOS和Ubuntu下升级GCC的具体操作;引用[5]则提到conda环境的解决方案。这些都需要整合到回答中。 注意到用户的错误信息比较特殊:一是"-std=c++14"中间有异常空格(c++14写成c++14),二是"-00"选项(可能是-O0优化级别被误写)。这提示除了编译器版本问题,还可能涉及编辑器配置错误。 准备分三步解决:首先确认编译器版本是否过旧(通过g++ -v命令),然后检查CP Editor的编译选项配置(特别是-std-O0的书写规范),最后提供升级方案(包括Linux环境下通过devtoolset或源码编译升级,以及conda环境方案)。需要特别强调检查"-std=c++14"的空格问题,这可能是直接触发错误的原因。 用户似乎不熟悉开发环境配置,操作指南要具体:比如检查配置文件的路径(~/.config/cpeditor/config.ini),升级编译区分apt/yum包管理等。安全提示也很重要,例如备份原编译器、谨慎使用ln命令等。 相关问题设计覆盖了常见延伸需求:编译器兼容性检测、不同系统环境下的升级操作、编辑器配置优化等,帮助用户预防同类问题。 </think> 根据引用内容和错误信息分析,您遇到的 `unrecognized command line option` 错误主要有两个原因及解决方案: --- ### **错误原因分析** 1. **编译器版本过低** `-std=c++14` 要求 GCC 5.0+ 版本(引用[3][4])。您的编译器可能低于此版本: ```bash g++ --version # 检查当前版本 ``` 2. **编译选项书写错误** 错误信息中 `-std=c++14` 显示为 `-std=c 14`(多出空格),且 `-O0`(字母O)误写为 `-00`(数字0),需检查编辑器配置。 --- ### **解决方案** #### 步骤1:修复编译器选项(立即生效) 1. 在 CP Editor 中定位编译配置: - 打开设置 → Compiler → 编译命令 2. **修正错误选项**: - 将 `-std=c 14` 改为 **`-std=c++14`** - 将 `-00` 改为 **`-O0`**(优化等级选项,O后接数字0) > 此操作可解决90%的语法错误(引用[1]) #### 步骤2:升级GCC编译器(根除兼容问题) ```bash # Ubuntu/Debian 系统 sudo apt install gcc-11 g++-11 # 安装GCC 11(支持C++17/20) sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 100 sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-11 100 # CentOS/RHEL 系统 sudo yum install devtoolset-11 # 安装GCC 11工具集 scl enable devtoolset-11 bash # 激活环境 ``` #### 验证升级结果 ```bash g++ -v # 应显示版本≥5.0 g++ -dM -E -x c++ /dev/null | grep -F __cplusplus # 检查支持的C++标准 ``` #### 备选方案:使用Conda环境(引用[5]) ```bash conda install -c conda-forge gxx=11.2.0 # 安装新版本编译器 ``` --- ### **关键注意事项** 1. **空格问题**:`-std=c++14` 必须无空格 2. **数字0 vs 字母O**:优化选项是 `-O0`(大写字母O+数字0) 3. 升级后需重启CP Editor或终端使新编译器生效 4. 若使用非系统编译器(如Conda),需在CP Editor中指定编译器路径(引用[5]) > 注:若仍报错,请检查CP Editor的 `构建命令` 配置(通常为 `g++ -std=c++14 -O0 $FILE -o $EXECUTABLE`)[^1][^2][^4]。 ---
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值