Centos 6.5升級gcc : 源碼安裝 + rpm安裝


1. 前言

采用Centos 6.5默認的gcc版本為4.4.7,不支持c++ 11,需要升級;

首先想到用yum命令:執行yum update gcc-c++或yum update g++ 顯示沒有可用更新;

於是只能手動下載更新gcc。

 

2. 源碼安裝

rpm安裝請見(4.參考資料)

@ 下載最新版本gcc:http://gcc.gnu.org/

@ 准備好以下三個庫,否則./configure將出現以下錯誤提示:

這三個庫可以使用gcc下自帶的腳本安裝:./contrib/download_prerequisites (手動安裝的下載地址:GMPMPFR, MPC

@ 進入gcc的目錄下,並執行configure,成功將生成Makefile文件;

# ./configure --prefix=/usr/local/gcc-5.4.0 --disable-multilib

--prefix:指定gcc的安裝目錄,若不指定gcc將默認安裝在/usr/local;

--disable-multilib:由於我使用的是64位系統,不加的話講出現如下錯誤提示 -

@ 編譯:# make  安裝:# make install

執行安裝命令將編譯好的文件拷貝到目標安裝文件夾中,至此安裝告一段落;

 

3. 配置

1) gcc 5.4.0的所有文件,包括命令文件(如gcc、g++)、庫文件等都在安裝目錄下分別存放,如命令文件放在bin目錄下、庫文件在 lib下、頭文件在include下等。由於命令文件和庫文件所在的目錄還沒有包含在相應的搜索路徑內,所以必須要作適當的設置之后編譯器才能順利地找到並使用它們。

@ 方法一:將gcc的安裝目錄/bin放在PATH中;

@ 方法二:使用符號連接的方式,這樣做可以仍然使用系統上的舊版本的gcc編譯器 -

(1)查看原來的gcc所在的路徑:

# which gcc 顯示:/usr/bin/gcc, 因此,原來的gcc命令在/usr/bin目錄下,將原來的gcc和g++文件更名為gcc447,g++447;

(2)將gcc 5.4.0中的gcc、g++、gcj等命令在/usr/bin目錄下分別做一個符號連接:

# cd /usr/bin

# ln -s gcc安裝目錄/bin/gcc gcc

# ln -s gcc安裝目錄/bin/g++ g++

這樣,就可以分別使用gcc、g++來調用GCC 5.4.0的gcc、g++完成對C、C++程序的編譯了。同時,仍然能夠通過gcc447,g++447使用舊版本的GCC編譯器。

 

2)源碼編譯升級安裝了gcc后,編譯程序或運行其他程序時,有時會出現類似“/usr/lib64/libstdc++.so.6:version 'GLIBCXX_*' not found的問題:

這是因為升級gcc時,生成的動態庫沒有替換老版本gcc的動態庫導致的,需要將gcc最新版本的動態庫替換系統中老版本的動態庫;

@ 解決方法

(1)首先檢查動態庫

=》gcc的動態庫依然為舊版本;

(2)執行以下命令,查找編譯gcc時生成的最新動態庫

# find / -name "libstdc++.so*"

(3)將上述最新動態庫libstdc++.so.6.0.21復制到/usr/lib64目錄下;修改系統默認動態庫的指向即可:

# cd /usr/lib64

# rm -rf libstdc++.so.6

# ln -s libstdc++.so.6.0.21 libstdc++.so.6

 

4. 參考資料

為你詳解Linux安裝GCC方法 (附rpm安裝方法)

Linux升級安裝gcc:/usr/lib/libstdc++.so.6:version GLIBCXX_* not found

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM