CentOS GCC对C++11的支持情况
CentOS 7系统默认安装的GCC版本为4.8.5(通过gcc --version或g++ --version查看),该版本完全支持C++11标准。这意味着你可以使用C++11的核心特性(如lambda表达式、智能指针、线程库、右值引用等)进行开发,无需额外升级GCC即可满足C++11的编译需求。
CentOS 8及以上版本默认的GCC版本更高(如CentOS 8默认GCC 8.x),这些版本不仅完全支持C++11,还对C++14、C++17等后续标准提供了更好的支持。因此,在更高版本的CentOS上,C++11的支持更加稳定和全面。
使用默认GCC编译C++11程序时,需要通过-std=c++11选项显式启用C++11标准。例如,编译一个简单的C++11线程程序(test_threads.cpp)的命令为:
g++ -std=c++11 -pthread test_threads.cpp -o test_threads
其中,-std=c++11指定使用C++11标准,-pthread启用POSIX线程库支持(C++11线程库依赖该选项)。编译成功后运行程序(./test_threads),若无报错则说明C++11支持正常。
若需要使用C++17及以上标准(如C++17的std::optional、std::string_view等特性),默认GCC 4.8.5无法满足需求,此时可通过以下方式升级GCC:
centos-release-scl仓库,然后通过yum install devtoolset-X-gcc*(X为版本号,如9、11)安装新版本GCC,再通过scl enable devtoolset-X bash临时激活或修改.bashrc永久生效。gmp-devel、mpfr-devel、libmpc-devel),配置并编译安装到自定义目录(如/usr/local/gcc-11.2.0),最后修改环境变量PATH指向新GCC的bin目录。