zoukankan      html  css  js  c++  java
  • CentOS 6 升级 GCC 支持C++11(c++11升级包)

    整个过程耗时 >4小时

    升级之后,gcc可能无法正常使用,出现错误:找不到编译器。

    1 查看gcc版本

    [root@testtest ~]# gcc -v
    Using built-in specs.
    Target: x86_64-redhat-linux
    Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-languages=c,c++,objc,obj-c++,java,fortran,ada --enable-java-awt=gtk --disable-dssi --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-1.5.0.0/jre --enable-libgcj-multifile --enable-java-maintainer-mode --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --disable-libjava-multilib --with-ppl --with-cloog --with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux
    Thread model: posix
    gcc version 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC)

     

     

    2 下载gcc

    http://ftp.gnu.org/gnu/gcc/

    wget ftp://ftp.irisa.fr/pub/mirrors/gcc.gnu.org/gcc/releases/gcc-8.3.0/gcc-8.3.0.tar.gz

    109MB

    3 解压

    tar -zxvf gcc-8.3.0.tar.gz

    4 进入目录

    cd gcc-8.3.0

    5 配置

        ./configure --prefix=/usr/local/gcc-8.3.0 --enable-checking=release --enable-languages=c,c++,gfortran --disable-multilib

          注意,如果出现错误以下错误: configure: error: Building GCC requires GMP 4.2+, MPFR 2.4.0+ and MPC 0.8.0+.
          请看文章底部的错误解决方法。

     

    6 编译

    make

    7 安装

    make install

    8 查看版本

    gcc -v

          如果发现版本没有变化,

          可以删除旧版本的gcc,如果旧版的是用yum安装的,可以使用 yum remove gcc

          然后把新安装的gcc的bin目录(/usr/local/gcc-8.3.0/bin)添加到环境变量(PATH)中,/etc/profile 文件中。  

    • 让/etc/profile文件修改后立即生效 ,可以使用如下命令:
    •         # source /etc/profile

          再查看版本,是否已变成最新安装的版本。

    9 更新标准库

          (这一步,应该是需要的,gcc升级后,标准库还是旧的,可能影响一些编译操作。)

          1、进入到刚才安装新的GCC的目录中:cd /usr/local/gcc-8.3.0

          2、进入到库目录:cd lib64 (注意:系统如果是64位的就进入到lib64目录,否则进入到lib目录)

          3、查看当前库的最搭版本:ls,结果看到:libstdc++.so.6.0.25

          4、复制到系统默认的库目录下:

            cp libstdc++.so.6.0.25 /usr/lib64/  (注意:系统如果是32:cp libstdc++.so.6.0.25 /usr/lib/)
          5、进入到/usr/lib64下,查看相关的版本信息

            cd /usr/lib64
            
    ls -l | grep libstdc++

            结果:
            ...   libstdc++.so.6 -> libstdc++.so.6.0.13
            ...  libstdc++.so.6.0.13
                                ...   libstdc++.so.6.0.25
          6、删除旧的软连接:
            rm -f libstdc++.so.6
          7、建立新的软连接:
            ln -s libstdc++.so.6.0.25 libstdc++.so.6

          8、查看标准库最新的版本:

            strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX  ##  strings 在对象文件或二进制文件中查找可打印的字符串      

        GLIBCXX_3.4
        GLIBCXX_3.4.1
        GLIBCXX_3.4.2
        GLIBCXX_3.4.3
        GLIBCXX_3.4.4
        GLIBCXX_3.4.5
        GLIBCXX_3.4.6
        GLIBCXX_3.4.7
        GLIBCXX_3.4.8
        GLIBCXX_3.4.9
        GLIBCXX_3.4.10
        GLIBCXX_3.4.11
        GLIBCXX_3.4.12
        GLIBCXX_3.4.13
        GLIBCXX_3.4.14
        GLIBCXX_3.4.15
        GLIBCXX_3.4.16
        GLIBCXX_3.4.17
        GLIBCXX_3.4.18
        GLIBCXX_3.4.19
        GLIBCXX_3.4.20
        GLIBCXX_3.4.21
        GLIBCXX_3.4.22
        GLIBCXX_3.4.23
        GLIBCXX_3.4.24
        GLIBCXX_3.4.25
        GLIBCXX_FORCE_NEW
        GLIBCXX_DEBUG_MESSAGE_LENGTH

         可以看到,已更新到最新的25版本。

    gcc -v
    Using built-in specs.
    COLLECT_GCC=gcc
    COLLECT_LTO_WRAPPER=/usr/local/gcc-8.3.0/libexec/gcc/x86_64-pc-linux-gnu/8.3.0/lto-wrapper
    Target: x86_64-pc-linux-gnu
    Configured with: ./configure --prefix=/usr/local/gcc-8.3.0 --enable-checking=release --enable-languages=c,c++ --disable-multilib
    Thread model: posix
    gcc version 8.3.0 (GCC)

    =======================================================

    安装gcc需要这三个依赖:GMP 4.2+, MPFR 2.4.0+ and MPC 0.8.0+。

    错误中还指出了下载页面的地址:

    ftp://gcc.gnu.org/pub/gcc/infrastructure/

    1、打开链接:

    ftp://gcc.gnu.org/pub/gcc/infrastructure/



    2、找到需要的三个包地址,下载下来:

    cd ..

    wget ftp://gcc.gnu.org/pub/gcc/infrastructure/gmp-6.1.0.tar.bz2

    wget ftp://gcc.gnu.org/pub/gcc/infrastructure/mpfr-3.1.4.tar.bz2

    wget ftp://gcc.gnu.org/pub/gcc/infrastructure/mpc-1.0.3.tar.gz

    3、安装GMP:      

    tar -jxvf gmp-6.1.0.tar.bz2
    cd gmp-6.1.0
    ./configure
    make && make install
    cd ..

    4、安装MPFR:

    tar -jxvf mpfr-3.1.4.tar.bz2
    cd mpfr-3.1.4
    ./configure
    make && make install
    cd ..

    5、安装MPC: 

    tar -zxvf mpc-1.0.3.tar.gz
    cd mpc-1.0.3
    ./configure
    make && make install
    cd ..

    export LD_LIBRARY_PATH="/usr/local/lib"

    The following requested languages could not be built: gfortran
    Supported languages are: c,brig,c,c++,fortran,go,lto,objc,obj-c++

    =======================================================

    REF

    https://blog.csdn.net/weiwangchao_/article/details/103897043/

    https://gcc.gnu.org/projects/cxx-status.html

  • 相关阅读:
    WPF Prism8.x源码解析-IDialogService
    .NET 中的正则表达式最佳做法(官方转载)
    .NET 5 中操作注册表方法
    在 .NET 5 及更高版本中比较字符串时的行为更改(官方转载)
    有关比较 .NET 中字符串的最佳做法(官方转载)
    C#创建Windows服务
    [log4j]log4j简单配置
    python基础知识之字符编码与转换
    python基础知识之集合
    python基础知识之字典的操作
  • 原文地址:https://www.cnblogs.com/emanlee/p/13914434.html
Copyright © 2011-2022 走看看