升級 GCC 支持C++11

一、錯誤發生情景:

使用sh setup.sh安裝軟件時,報以下錯誤:

...
configure: error: *** A compiler with support for C++11 language features is required.
---
ERROR: failed to configure xapian-core-scws, see 'setup.log' for more detail

二、錯誤原因:

  gcc版本太低了


 

三、解決問題:

  (1)查看當前的gcc版本:

    gcc -v

    結果:gcc 版本 4.4.7 20120313 (Red Hat 4.4.7-23) (GCC)

  (2)下載高版本的gcc:

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

  (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++ --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目錄添加到環境變量中,/etc/pfofile文件中。

      再查看版本,是否已變成最新安裝的版本。

  (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下,查看相關的版本信息
        
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        

 

GLIBCXX_3.4
GLIBCXX_3.4.1
.
.
.
GLIBCXX_3.4.24
GLIBCXX_3.4.25
GLIBCXX_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH

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


 

可能遇見的錯誤:

  在執行.configure命令時,可能遇到以下錯誤:

...省略
configure: error: Building GCC requires GMP 4.2+, MPFR 2.4.0+ and MPC 0.8.0+.
Try the --with-gmp, --with-mpfr and/or --with-mpc options to specify
their locations. Source code for these libraries can be found at
their respective hosting sites as well as at
ftp://gcc.gnu.org/pub/gcc/infrastructure/. See also
http://gcc.gnu.org/install/prerequisites.html for additional info. If
you obtained GMP, MPFR and/or MPC from a vendor distribution package,
make sure that you have installed both the libraries and the header
files. They may be located in separate packages.

錯誤說明,安裝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、找到需要的三個包地址,下載下來:

      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

  4、安裝MPFR:

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

  5、安裝MPC: 

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

export LD_LIBRARY_PATH="/usr/local/lib"


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章