linux下安装或进级GCC 4.8以支持C++11尺度
C++11尺度在2011年8月份得到一致通过,这是自1998年后C++语言第一次大修订,对C++语言举办了改造和扩充。随后各编译器厂商都各自实现或部门实现了C++中的特性。
如需查察各编译器对C++11的支持水平,请参看文章:
本文主要先容在Linux系统下,如何进级GCC以支持C++11。今朝来看GCC是对C++11支持水平最高最多的编译器,但需要GCC4.8及以上版本。
本文利用操纵系统:Centos 6.4 Desktop,64bit;
原GCC版本:4.4.7;
方针:进级GCC到4.8.2,以支持C++11。
获取GCC 4.8.2包:wget http://gcc.skazkaforyou.com/releases/gcc-4.8.2/gcc-4.8.2.tar.gz;
解压缩:tar -xf gcc-4.8.2.tar.gz;
进入到目次gcc-4.8.2,运行:./contrib/download_prerequisites。这个神奇的剧本文件会帮我们下载、设置、安装依赖库,可以节省我们大量的时间和精神。
成立输出目次并到目次里:mkdir gcc-build-4.8.2;cd gcc-build-4.8.2;
../configure –enable-checking=release –enable-languages=c,c++ –disable-multilib。–enable-languages暗示你要让你的gcc支持那些语言,–disable-multilib不生成编译为其他平台可执行代码的交错编译器。–disable-checking生成的编译器在编译进程中不做特别查抄,也可以利用–enable-checking=xxx来增加一些查抄;
编译:make;留意此步和上一步,较量耗时;
安装:make install;
验证:gcc -v;可能g++ -v,假如显示的gcc版本仍是以前的版本,就需要重启系统;可能可以查察gcc的安装位置:which gcc;然后在查察版本 /usr/local/bin/gcc -v,凡是gcc都安装在该处位置,假如显示为;
则暗示已经进级乐成。
验证是否可以或许正常事情,以新插手到C++11中的std::array为例。
vim stdarray.cpp;
输入C++代码:
#include <iostream> #include <string> #include <iterator> #include <algorithm> #include <array> int main() { // construction uses aggregate initialization std::array<int, 3> a1{ {1,2,3} }; // double-braces required std::array<int, 3> a2 = {1, 2, 3}; // except after = std::array<std::string, 2> a3 = { {std::string("a"), "b"} }; // container operations are supported std::sort(a1.begin(), a1.end()); std::reverse_copy(a2.begin(), a2.end(), std::ostream_iterator<int>(std::cout, " ")); std::cout << '\n'; // ranged for loop is supported for(auto& s: a3) std::cout << s << ' '; std::cout << '\n'; }
编译:g++ -std=c++11 -o stdarray stdarray.cpp; 必然要加上c++11,不然大概无法编译可能无法运行。
运行:./stdarray;
功效输出:
则暗示进级后的GCC确实可以或许支持C++11开拓。
作者:cnblogs lizhenghn