zoukankan      html  css  js  c++  java
  • gcc 4.8安装

    suse的安装参考:http://blog.csdn.net/cloudskyfhx/article/details/17660607 有些错误处理见本文黄色部分

     

    CentOS 6.4 编译安装 gcc 4.8.1

    转自:https://www.cnblogs.com/codemood/archive/2013/06/01/3113200.html

    今天在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脚本的做法,个人感觉更简洁些)。

    注意:我的是suse linux sp3,使用上面的方法会报错,我是直接下载gmp、mpfr、mpc,然后cd 各个目录,./configure, make && make install来安装的。注意:configure没有使用任何参数。

    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分钟不到的时间,不算太慢了。

    我安装时遇到的错误:

    error: cannot compute suffix of object files: cannot compile

    解决办法:
    因为我的gmp, mpfr, mpc都是使用默认参数安装的,没指定任何参数
    ./configure
    make
    make install
    所以直接使用下面的命令设置环境变量就可以了:
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
    如果安装时指定了安装目录,使用类似下面的命令:
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/gcc-4.6.3/mpc-0.9/mpc_install/lib:/opt/gcc-4.6.3/gmp-5.0.4/gmp_install/lib:/opt/gc
    我的解决方法是:
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib/
    因为我看到gmp、mpfr、mpc都在/usr/local/lib下面:
    s /usr/local/lib
    gcc  libgmp.a  libgmp.la  libgmp.so  libgmp.so.10  libgmp.so.10.1.3  libmpc.a  libmpc.la  libmpc.so  libmpc.so.3  libmpc.so.3.0.0  libmpfr.a  libmpfr.la  libmpfr.so  libmpfr.so.4  libmpfr.so.4.1.2

    此外:

    编译时的错误处理。

    configure: error: C++ compiler missing or inoperational
    
    make[2]: *** [configure-stage1-libcpp] Error 1    
    make[2]: Leaving directory `/home/liukk/gcc-4.8.1'    
    make[1]: *** [stage1-bubble] Error 2    
    make[1]: Leaving directory `/home/liukk/gcc-4.8.1'    
    make: *** [all] Error 2

    解决办法:

    安装如下内容:

    zypper  install gcc-c++

     

    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

  • 相关阅读:
    HAIP异常,导致RAC节点无法启动的解决方案
    ORA-00600: internal error code, arguments: [kcbo_unlink_q_3], [0x3710B87B0]
    impdp导入报错之ORA-39126
    ORA-27102: out of memory (2019-11-29 18:30)
    ORA-00371: not enough shared pool memory
    Warning: VKTM detected a time drift.
    Cable master (POJ No.1064)
    二分查找
    结构体和类的operator<
    mybatis(基于annotation的方法知道就行了)
  • 原文地址:https://www.cnblogs.com/bonelee/p/8309636.html
Copyright © 2011-2022 走看看