centos6.5下qt编译报错unrecognized command line option “-std=c++11”

在QT5.5下编译使用C++11特性的程序时,遇到unrecognized command line option “-std=c++11”的错误。原因是系统的gcc版本过低(4.4.7)。通过下载并安装gcc4.8.2,然后进行编译、安装,并更新gcc软链接,成功解决此问题,使得QT能够正确编译C++11代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

QT5.5下编译带C++11特征的程序,需要在pro文件下添加QMAKE_CXXFLAGS += -std=c++11

添加后仍然报错unrecognized command line option “-std=c++11”, 是因为g++ gcc版本不够高

gcc默认版本是4.4.7。 下面下载安装4.8.2

1. 下载gcc-4.8.2.tar.gz     地址http://ftp.gnu.org/gnu/gcc/gcc-4.8.2/

2.安装: tar -zxvf /home/jello/Download/gcc-4.8.2.tar.gz -C /usr/local      解压到/usr/local目录下

                cd /usr/local/gcc-4.8.2.tar.gz

                ./contrib/download_prerequisites  这个脚本文件帮我们下载,配置,安装依赖庫

                mkdir gcc-build-4.8.2  新建编译文件夹

                cd gcc-build-4.8.

<think>好的,我现在需要解决用户遇到的编译问题:g++不识别‘-std=gnu++17’选项,导致编译node-v18.20.3时出现icuucx相关的错误。用户提供了几个引用,我需要结合这些信息来分析问题。 首先,用户提到的错误信息是“unrecognized command line option-std=gnu++17’”,这通常表示当前使用的g++版本不支持C++17标准。根据引用中的例子,比如引用[1]提到-std=c++20的问题,引用[2]关于-std=c++14的问题,引用[3]和引用[4]也涉及类似问题,可以推断出问题的根源是g++版本过低,不支持所需的C++标准。 接下来,我需要确认用户的环境。用户可能是在某个Linux发行版上,比如CentOS或Ubuntu,但具体版本未知。不过根据引用中的例子,比如引用[2]提到CentOS中的g++ 4.8.5,引用[3]中的gcc 4.4.7升级到4.9.4仍然有问题,引用[4]使用conda安装gcc 5.4.0,可能用户的环境中的g++版本较低,可能低于5.0,因为g++5开始支持C++14,而C++17需要g++7或更高版本。 然后,解决方法是升级g++到支持C++17的版本。用户可能需要安装g++7或更高版本,并确保系统默认使用新版本的g++。但要注意,有些系统可能需要手动切换默认的g++版本,比如使用update-alternatives命令(在Debian/Ubuntu)或通过环境变量调整。 另外,用户提到编译的是node-v18.20.3,可能Node.js的某些部分需要C++17支持,特别是ICU库(比如icuucx),这可能依赖于较新的编译器特性。如果用户已经升级了g++但问题依旧,可能需要检查是否真的切换了默认编译器,或者构建脚本是否硬编码了旧版本的路径。 根据引用[3]的情况,用户可能已经尝试升级了gcc/g++,但构建时仍使用旧版本。这时候可能需要通过设置环境变量如CC和CXX来指定新版本的编译器路径,或者在编译时传递参数指定编译器路径。 最后,建议用户检查当前g++版本,升级到足够新的版本(如g++7+),并确保编译时使用的是正确的编译器版本。如果系统包管理器没有提供新版本,可能需要添加第三方仓库(如Ubuntu Toolchain PPA)或从源码编译安装。</think>### 解决方案:g++不识别`-std=gnu++17`选项的解决方法 #### 问题原因 编译时出现`error: unrecognized command line option-std=gnu++17’`,说明当前系统的**g++编译器版本过低**,不支持C++17标准。Node.js v18.20.3依赖C++17特性,因此需要升级g++到支持该标准的版本(**g++7及以上**)[^3][^4]。 --- ### 解决步骤 #### 1. 检查当前g++版本 ```bash g++ --version ``` 若输出为`g++ (GCC) 4.8.5`或更低版本,说明需要升级编译器。 --- #### 2. 升级g++到支持C++17的版本 不同系统的升级方式如下: ##### Ubuntu/Debian系统 ```bash # 添加Ubuntu Toolchain PPA仓库 sudo add-apt-repository ppa:ubuntu-toolchain-r/test sudo apt update # 安装g++9(支持C++17) sudo apt install g++-9 # 将g++9设为默认编译器 sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 100 ``` ##### CentOS/RHEL系统 ```bash # 安装SCL(Software Collections)仓库 sudo yum install centos-release-scl # 安装g++9 sudo yum install devtoolset-9-gcc-c++ # 临时启用g++9(仅当前会话生效) scl enable devtoolset-9 bash # 永久生效:将以下内容添加到~/.bashrc echo "source scl_source enable devtoolset-9" >> ~/.bashrc ``` --- #### 3. 验证g++版本 ```bash g++ --version ``` 输出应类似: ``` g++ (GCC) 9.3.0 ``` --- #### 4. 重新编译Node.js ```bash # 清除之前的编译缓存 make clean # 指定C++标准并重新编译 export CXXFLAGS="-std=gnu++17" ./configure make -j$(nproc) sudo make install ``` --- #### 5. 若问题依旧:手动指定编译器路径 某些系统可能需要显式指定新版本编译器路径: ```bash # 查找g++安装路径(例如/usr/bin/g++-9) which g++-9 # 编译时强制使用新版本 CXX=/usr/bin/g++-9 ./configure make ``` --- ### 关键点总结 - **编译器版本**:C++17需g++7+,C++20需g++10+[^1][^2]。 - **环境变量**:通过`CXXFLAGS`或`CXX`指定编译选项。 - **系统兼容性**:CentOS等老旧系统需通过SCL或源码升级编译器[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值