1. 程式人生 > >在CentOS 6.6 64bit上升級GCC到4.8.2版本

在CentOS 6.6 64bit上升級GCC到4.8.2版本

作業系統CentOS6.6 64bit上gcc原版本4.4.7,不能支援C++11的特性~,為了便於YouCompleteMe外掛,我希望升級到4.8.2。不能通過yum的方法升級,需要自己手動下載安裝包並編譯,下面假定都是以root使用者安裝。

一、升級過程

1.獲取gcc安裝包並解壓

gcc官網http://ftp.gnu.org/gnu/gcc裡面有所有的gcc版本供下載,最新版本為5.3.0


這裡我們暫保守選擇安裝gcc 4.8.2
wget http://ftp.gnu.org/gnu/gcc/gcc-4.8.2/gcc-4.8.2.tar.gz
tar -zxvf gcc-4.8.2.tar.gz
2.下載供編譯需求的依賴項

這個神奇的指令碼檔案會幫我們下載、配置、安裝依賴庫,可以節約我們大量的時間和精力,我們可以直接開啟其原始碼看看。
它會下載指定的原始碼包並做軟連線。
cd gcc-4.8.2 
./contrib/download_prerequisites 
下面需要依次從原始碼安裝這幾個依賴庫
gmp,mpfr,mpc

3.建立一個目錄供編譯出的檔案存放
mkdir gcc-build-4.8.2
cd gcc-build-4.8.2
4. 生成Makefile檔案
../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib
5.編譯

make -j4
注意:此步驟非常耗時,普通PC花費半小時不稀奇,我的高配電腦只用了10分鐘左右
6.安裝
sudo make install
7.切換GCC到新版
確定新安裝的GCC的路徑,一般預設在/usr/local/bin下。可以先updatedb,然後再輸入

ls /usr/local/bin | grep gcc


查詢。新增新GCC到可選項,倒數第三個是名字,倒數第二個引數為新GCC路徑,最後一個引數40為優先順序,設大一些之後就自動使用新版了
update-alternatives --install /usr/bin/gcc gcc /usr/local/bin/x86_64-unknown-linux-gnu-gcc 40


8.確認當前版本已經切換為新版
gcc -v
g++ -v
注意需要重新開啟終端才能生效。

二、驗證安裝
嘗試寫一個C++11特性的程式段 tryCpp11.cc,使用了shared_ptr
//tryCpp11.cc
#include <iostream>
#include <memory>
int main()
{
    std::shared_ptr<int> pInt(new int(5));
    std::cout << *pInt << std::endl;
    return 0;
}

驗證檔案:
g++ -std=c++11 -o tryCpp11 tryCpp11.cc
./tryCpp11

三、安裝中遇到的問題澄清
1.是否需要手動安裝依賴庫?
不需要,程式會內部自動處理,手動安裝反而後出錯。
2.安裝動態庫後,是否需要更新動態庫?
更不需要修改並更新/etc/ld.so.conf檔案之類的
3.如果編譯錯誤,不要make distclean之類的,直接重新解壓原始碼再來一遍
4.編譯過程中出現錯誤
configure: error: cannot compute suffix of object files: cannot compile
這是找不到依賴庫的位置

四、參考文獻
[1].http://www.linuxidc.com/Linux/2015-01/112595.htm   4.8.3版本
[2].http://blog.csdn.net/szq123456123/article/details/45170923   4.9.2版本
[3].http://www.mamicode.com/info-detail-550954.html  對排錯很有參考
[4].http://www.cnblogs.com/peterpanzsy/archive/2013/04/10/3006838.html 對排錯很有幫助,推薦