• CentOS6.5升级手动安装GCC4.8.2 与 CentOS 6.4 编译安装 gcc 4.8.1


    http://blog.163.com/zhu329599788@126/blog/static/6669335020161179259975

     
    CentOS6.5升级手动安装GCC4.8.2

    一、简易安装

    操作环境 CentOS6.5 64bit,原版本4.4.7,不能支持C++11的特性~,希望升级到4.8.2

    不能通过yum的方法升级,需要自己手动下载安装包并编译

    1.1 获取安装包并解压

    wget http://ftp.gnu.org/gnu/gcc/gcc-4.8.2/gcc-4.8.2.tar.bz2
    tar -jxvf gcc-4.8.2.tar.bz2

    当然,http://ftp.gnu.org/gnu/gcc  里面有所有的gcc版本供下载,最新版本已经有4.9.2啦.

    1.2 下载供编译需求的依赖项

    参考文献[1]中说:这个神奇的脚本文件会帮我们下载、配置、安装依赖库,可以节约我们大量的时间和精力。

    cd gcc-4.8.0 
    ./contrib/download_prerequisites 

    1.3 建立一个目录供编译出的文件存放

    mkdir gcc-build-4.8.2
    cd gcc-build-4.8.2

    1.4 生成Makefile文件

    ../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib

    1.5 编译(注意:此步骤非常耗时)

    make -j4

    -j4选项是make对多核处理器的优化,如果不成功请使用 make,相关优化选项可以移步至参考文献[2]。

    我在安装此步骤时候出错,错误描述:

     
    compilation terminated.
    make[5]: *** [_gcov_merge_add.o] 错误 1
    make[5]: Leaving directory `/home/imdb/gcc-4.8.2/gcc-build-4.8.2/x86_64-unknown-linux-gnu/32/libgcc'
    make[4]: *** [multi-do] 错误 1
    make[4]: Leaving directory `/home/imdb/gcc-4.8.2/gcc-build-4.8.2/x86_64-unknown-linux-gnu/libgcc'
    make[3]: *** [all-multi] 错误 2
    make[3]: *** 正在等待未完成的任务....
    make[3]: Leaving directory `/home/imdb/gcc-4.8.2/gcc-build-4.8.2/x86_64-unknown-linux-gnu/libgcc'
    make[2]: *** [all-stage1-target-libgcc] 错误 2
    make[2]: Leaving directory `/home/imdb/gcc-4.8.2/gcc-build-4.8.2'
    make[1]: *** [stage1-bubble] 错误 2
    make[1]: Leaving directory `/home/imdb/gcc-4.8.2/gcc-build-4.8.2'
    make: *** [all] 错误 2
     

    大概看看,错误集中在 x86_64unknown-linux-gnu/32/libgcc 和 x86_64-unknown-linux-gnu/libgcc

    根据参考文献[3],安装如下两个软件包(仅用于CentOS6.X):

    sudo yum -y install glibc-devel.i686 glibc-devel

    过程中CPU基本满载:

    CentOS6.5升级手动安装GCC4.8.2 - zhu329599788@126 - Mindy

    1.6、安装

    sudo make install

    二、验证安装

    重启,然后查看gcc版本:

    gcc -v

    尝试写一个C++11特性的程序段 tryCpp11.cc,使用了shared_ptr

     
     1 //tryCpp11.cc
     2 #include <iostream>
     3 #include <memory>
     4 
     5 int main()
     6 {
     7     std::shared_ptr<int> pInt(new int(5));
     8     std::cout << *pInt << std::endl;
     9     return 0;
    10 }
     

    验证文件:

    g++ -std=c++11 -o tryCpp11 tryCpp11.cc
    ./tryCpp11

    --------------------------------------------------------------------------------------------------------------------


     CentOS 6.4 编译安装 gcc 4.8.1

    今天在isocpp上看到“GCC 4.8.1 released, C++11 feature complete”这个消息,非常兴奋。终于有一个全面支持C++11语言特性的编译器了!

    当然了,gcc仅仅是语言特性上全面支持C++11,libstdc++貌似还没有完全跟上,不过我已经挺满足了,至少可以去尝试各种特性了。另外,之前也有消息说Clang功能上也100%支持C++11了,但是内部还在做测试,Clang3.3的release版据说6月5号正式发布,最近对于C++来说大事真多啊,很期待!

    今天下午看到这个消息,晚上就实在忍不住了,赶紧把最新的gcc下载下来编译安装起来,下面介绍下安装步骤:

    安装之前,还是提醒下大家:一些基本的准备工作我就不说了,比如得装个Linux(CentOS,Ubuntu等等),然后装上基本的编译环境,用较老的编译环境编译新的编译器,这叫自举(bootstrap)。如果编译的过程,提示出错,就按照提示去把环境装好,不再详细说明。

    1、下载gcc 4.8.1源码包:

    http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-4.8.1/gcc-4.8.1.tar.bz2

    我是虚拟机里面装的Linux,我嫌wget太慢,所以自己在Windows上用迅雷下好,然后共享到Linux中。

    2、解压:

    tar -jxvf gcc-4.8.1.tar.bz2

    3、下载编译所需的依赖包:

    这个步骤有两种方式完成:

    a) 如果Linux有网络连接,直接这样:

    cd gcc-4.8.1

    ./contrib/download_prerequisites

    cd ..

    b) 如果Linux没有网络连接(我主机和虚拟机是Host-only,不能联网,所以另外想办法),则用Windows上网下载这几个包:

    ftp://ftp.gnu.org/gnu/gmp/gmp-4.3.2.tar.bz2

    http://www.mpfr.org/mpfr-2.4.2/mpfr-2.4.2.tar.bz2

    http://www.multiprecision.org/mpc/download/mpc-0.8.1.tar.gz

    有人问,一定要下载几个版本吗?下载最新的版本行不行?我没试过,也不知道,我是按照gcc-4.8.1/contrib/download_prerequisites脚本里面的版本下载的。既然里面已经说了这几个版本,那我就严格按照它的要求来做。

    然后解压并移动到gcc-4.8.1下面:

    tar -xjf gmp-4.3.2.tar.bz2

    tar -xjf mpfr-2.4.2.tar.bz2

    tar -xzf mpc-0.8.1.tar.gz

    mv gmp-4.3.2 gcc-4.8.1/gmp

    mv mpfr-2.4.2 gcc-4.8.1/mpfr

    mv mpc-0.8.1 gcc-4.8.1/mpc

    这样的做法好处是,不用单独编译gmp、mpfr和mpc三个包,放在gcc源码下面一起编译(事实上这也是gcc-4.8.1/contrib/download_prerequisites脚本的做法,个人感觉更简洁些)。

    4、新建目录用于存放编译结果:

    mkdir gcc-build-4.8.1

    5、进入新目录,并执行configure命令,产生makefile:

    cd gcc-build-4.8.1

    ../gcc-4.8.1/configure --enable-checking=release --enable-languages=c,c++ --disable-multilib

    具体选项不多解释,大家可以自己查看,我只用到c和c++,所以只编译这两种语言的编译器。

    6、编译:

    make -j4

    我是i5四核,所以开4个线程同时编译,要是有8核就更爽了~我在虚拟机里面花了30分钟不到的时间,不算太慢了。

    7、安装:

    sudo make install

    8、大功告成,检查版本:

    g++ --version

    g++ (GCC) 4.8.1
    Copyright (C) 2013 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions. There is NO
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

    【参考文章】:

    http://rritw.com/a/caozuoxitong/OS/20130407/335815.html

    http://www.lainme.com/doku.php/blog/2012/06/%E5%9C%A8centos_5%E4%B8%8A%E7%BC%96%E8%AF%91gcc_4.7

    http://www.cnblogs.com/chuncn/archive/2010/10/15/1851853.html

    http://blog.csdn.net/bokee/article/details/5380044



  • 相关阅读:
    [BJOI2012]最多的方案(记忆化搜索)
    our happy ending(状压dp)
    [NOI2005]聪聪与可可(期望dp)
    CF983A Finite or not?(数学)
    [POI2012]STU-Well(二分答案+神仙操作)
    作诗2(玄学)
    IncDec Sequence(差分)
    [Vani有约会]雨天的尾巴(树上差分+线段树合并)
    合法括号序列(dp+组合数学)
    [SHOI2014]概率充电器(概率+换根dp)
  • 原文地址:https://www.cnblogs.com/zengkefu/p/6351680.html
Copyright © 2020-2023  润新知