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

原文地址:https://www.cnblogs.com/emanlee/p/13914434.html