CentOS6.8下編譯安裝GCC

來源:互聯網
上載者:User

CentOS6.8下編譯安裝GCC

關於 GCC 在 CentOS 下通過 yum 安裝預設版本號碼,CentOS 5 是 4.1.2;CentOS 6 是 4.4.7;CentOS 7 是 4.8.3。
很多時候在編譯安裝軟體都需要高版本的 GCC,否則就會報錯。
那麼如何升級 GCC 的版本呢?

首先要確認升級到的 GCC 版本號碼。
目前 GCC 的最新版已經到了 5.2,而 CentOS 7 則依然使用其 4.8,所以基於相容性考慮,我選擇升級到 4.8.5。
GCC 官網:https://gcc.gnu.org

下面開始一步一步來編譯安裝 GCC 4.8.5,需要注意的是,在編譯安裝 GCC 之前,系統裡必須先要通過 yum 安裝老版本的 GCC 和依賴庫。
如果是在 x86_64 系統下編譯的話,還需要安裝 libgcc.i686 glibc-devel.i686 才行。

yuminstall-ygcctexinfo-texflexziplibgcc.i686glibc-devel.i686

注意:編譯安裝 GCC 記憶體不小於 1GB,Swap 不小於 1GB,硬碟最低不小於 10GB,否則極有可能會中途報錯退出。
編譯安裝完後,目錄 gcc-4.8.5 將會有 5GB 之多。

1、下載源碼

wgetftp://ftp.gnu.org/gnu/gcc/gcc-4.8.5/gcc-4.8.5.tar.gz

2、下載依賴包
編譯安裝 GCC 需要依賴 mpc,mpfr,gmp包。好在 GCC 源碼裡內建指令碼可以輕鬆下載依賴包。

tarzxfgcc-4.8.5.tar.gzcdgcc-4.8.5./contrib/download_prerequisites




編譯和安裝
# cd gcc-4.8.1
#./gcc-4.8.1/configure--prefix=/usr/local/gcc-4.8.1 --enable-languages=c,c+

prefix=/usr/local/gcc-4.8.1表示配置安裝的路徑,如果不指定安裝路徑,執行檔案會預設放在/usr/local/bin下,這樣做是為了方便維護,當需要卸載時,直接刪除該目錄即可。
enable-languages表示安裝語言,在這裡表示只安裝c和c++

編譯
準備工作完成後,就可以編譯了
# make
此過程大概2小時左右哦,如果中途報錯,提示fatal error:gnu/stubs-32,No such file or directory.如示:

運行下面命令,然後重新編譯
# yum -y install glibc-devel.i686 --setopt=protected_multilib=false

# make

參考資料:

CentOS 6.7 下升級 g++
https://allen-kevin.github.io/2016/09/28/CentOS%206.7%E4%B8%8B%E5%8D%87%E7%BA%A7g++/
解決libc.so.6: version `GLIBC_2.14' not found問題
http://blog.csdn.net/cpplang/article/details/8462768
安裝gcc4.8.5
https://teddysun.com/432.html

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.