centos升级gcc

不同的gcc版本对C++的支持情况不一样,如下图所示:

GCC版本对C++的支持情况

C++版本

GCC版本支持情况 GCC版本 指定版本的命令标志
C++98 完全支持 是GCC 6.1之前版本的默认模式  -std=c++98 or -std=gnu++98
C++11 完全支持 从GCC4.8.1版本开始完全支持 -std=c++11 or -std=gnu++11
C++14 完全支持  从GCC 6.1版本开始完全支持,是GCC 6.1到GCC 10 (包括) 的默认模式 -std=c++14 or -std=gnu++14
C++17 完全支持 从GCC 5版本开始,到GCC 7版本,已基本完全支持。 是GCC 11版本的默认模式 -std=c++17 or -std=gnu++17
C++20 未完全支持 从GCC 8版本开始陆续支持C++20特性 -std=c++20 or -std=gnu++20(GCC9及以前使用-std=c++2a)
C++23 未完全支持(标准还在发展中)  从GCC 11版本开始支持C++23特性 -std=c++2b or -std=gnu++2b

但是某些centos系统默认安装的gcc是低版本,比如centos7 默认的 gcc 是4.8.5,不完全支持C++14,会导致无法编译部分C++程序,所以我们得升级gcc。但是不要编译gcc!!! 之前我按照《linux升级gcc版本详细教程》的步骤,在make的时候,等待了12个小时也没有编译完成。

我们可以通过devtoolset来升级gcc。参考《CentOS7/完美升级gcc版本方法》。然后我们可以通过把/opt/rh/devtoolset-X/enable中的内容拷贝到/etc/bashrc 中,来激活该gcc。

升级完gcc后,如果我们想要在cmake中指定编译使用该gcc,则要在CMakeLists.txt 中添加如下语句:

SET(CMAKE_C_COMPILER "/opt/rh/devtoolset-X/root/usr/bin/gcc")
SET(CMAKE_CXX_COMPILER "/opt/rh/devtoolset-X/root/usr/bin/g++")

你可能感兴趣的:(linux,linux)