zoukankan      html  css  js  c++  java
  • 转:linux下安装或升级GCC4.8,以支持C++11标准

    转:http://www.cnblogs.com/lizhenghn/p/3550996.html

    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。

    1. 获取GCC 4.8.2包:wget http://gcc.skazkaforyou.com/releases/gcc-4.8.2/gcc-4.8.2.tar.gz;
    2. 解压缩:tar -xf gcc-4.8.2.tar.gz;
    3. 进入到目录gcc-4.8.2,运行:./contrib/download_prerequisites。这个神奇的脚本文件会帮我们下载、配置、安装依赖库,可以节约我们大量的时间和精力。
    4. 建立输出目录并到目录里:mkdir gcc-build-4.8.2;cd gcc-build-4.8.2;
    5. ../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib。--enable-languages表示你要让你的gcc支持那些语言,--disable-multilib不生成编译为其他平台可执行代码的交叉编译器。--disable-checking生成的编译器在编译过程中不做额外检查,也可以使用--enable-checking=xxx来增加一些检查;
    6. 编译:make;注意此步和上一步,比较耗时;
    7. 安装:make  install;
    8. 验证:gcc -v;或者g++ -v,如果显示的gcc版本仍是以前的版本,就需要重启系统;或者可以查看gcc的安装位置:which gcc;然后在查看版本 /usr/local/bin/gcc -v,通常gcc都安装在该处位置,如果显示为;

         

       

    则表示已经升级成功。

    验证是否能够正常工作,以新加入到C++11中的std::array为例。

    vim stdarray.cpp;

    输入C++代码:

    复制代码
     1 #include <iostream>
     2 #include <string>
     3 #include <iterator>
     4 #include <algorithm>
     5 #include <array>
     6  
     7 int main()
     8 {
     9     // construction uses aggregate initialization
    10     std::array<int, 3> a1{ {1,2,3} };  // double-braces required
    11     std::array<int, 3> a2 = {1, 2, 3}; // except after =
    12     std::array<std::string, 2> a3 = { {std::string("a"), "b"} };
    13  
    14     // container operations are supported
    15     std::sort(a1.begin(), a1.end());
    16     std::reverse_copy(a2.begin(), a2.end(), 
    17                       std::ostream_iterator<int>(std::cout, " "));
    18  
    19     std::cout << '
    ';
    20  
    21     // ranged for loop is supported
    22     for(auto& s: a3)
    23         std::cout << s << ' ';
    24     std::cout << '
    ';    
    25 }
    复制代码

    编译:g++ -std=c++11 -o stdarray stdarray.cpp; 一定要加上c++11,否则可能无法编译或者无法运行。

    运行:./stdarray;

    结果输出:

    则表示升级后的GCC确实能够支持C++11开发。

  • 相关阅读:
    赫尔维茨公式
    从解析几何的角度分析二次型
    Struts 1 Struts 2
    记一次服务器被入侵的调查取证
    契约式设计 契约式编程 Design by contract
    lsblk df
    Linux Find Out Last System Reboot Time and Date Command 登录安全 开关机 记录 帐号审计 历史记录命令条数
    Infrastructure for container projects.
    更新文档 版本控制 多版本并发控制
    Building Microservices: Using an API Gateway
  • 原文地址:https://www.cnblogs.com/jhj117/p/6117204.html
Copyright © 2011-2022 走看看