1. 程式人生 > >CentOS 6.5 升級gcc到4.8 以及libstdc++

CentOS 6.5 升級gcc到4.8 以及libstdc++

CentOS 6.5 自帶gcc太舊不支援c11, 升級到4.8的步驟:

  貼一下步驟:      一、簡易安裝      操作環境 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

  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

          三、其他安裝:
  - 在Ubuntu機器上安裝:參考文獻[3]

  - 非簡易安裝:參考文獻[4]

  - 多個gcc版本共存問題:暫無


          四、參考文獻      [1] 參考的主要安裝步驟 http://www.cnblogs.com/ytjjyy/p/4008096.html

    注:這篇文章的後半部分解決動態庫的方法非常有用處

安裝完後, 編譯程式執行應該還是有 GLIBCXX not found的錯誤
解決方案:

注意其中

$ cp /usr/local/lib64/libstdc++.so.6.0.20 /usr/lib64   
$ rm -rf /usr/lib64/libstdc++.so.6  
$ ln -s /usr/lib64/libstdc++.so.6.0.20 /usr/lib64/libstdc++.so.6  
$ strings /usr/lib64/libstdc++.so.6 | grep GLIBC  

本人的計算機上不是20, 而是18

相關推薦

no