CentOS 7上升級/安裝gcc

轉載請註明文章出處:tlanyan.me/install-upg…c++

CentOS 7官方源帶的gcc最新版本是4.8.5,發佈於2015年,年代久遠且不支持c++14。要編譯c++14及以上項目,必需要升級現有版本或者安裝高版本的gcc。git

問題的解決辦法主要有兩種:手動編譯安裝(也能夠從其餘機器拷貝或者網上下載),或從源安裝。大多數狀況下本人都不推薦從源碼編譯,由於過程當中常會出現各類依賴問題須要人工手動解決,費時(單核編譯gcc至少一小時)且耗費精力,而且軟件升級還要再來一次,至關的折騰。鑑於此下文介紹從源安裝的方法。centos

紅帽其實已經編譯好了高版本的gcc,但未更新到base和epel這兩個經常使用的源中,而是放在scl中。第一步即是安裝sclbash

yum install -y centos-release-scl
複製代碼

若是你以前用過grouplist/install等命令,應該知道gcc包含在Development Tools這個組中。那麼scl中的gcc/g++軟件包的前綴都是devtoolset,也就不難理解了。安裝gcc 6版本的命令是:gitlab

yum install -y devtoolset-6-gcc devtoolset-6-gcc-c++
複製代碼

devtoolset-6中的gcc版本爲gcc 6,除此以外還有以下版本:spa

  • devtoolset-3: gcc 4.9
  • devtoolset-4: gcc 5
  • devtoolset-6: gcc 6
  • devtoolset-7: gcc 7
  • devtoolset-8: gcc 8

至於爲何沒有devtoolset-5,我也不清楚,估計是包含在devtoolset-4中了吧。值得說明的是這些軟件包能夠同時安裝,不會相互覆蓋和衝突,也不會覆蓋系統的版本。便可以在系統中同時安裝gcc 6, gcc 7, gcc 8等多個版本。rest

由於不會覆蓋系統默認的gcc,使用這些軟件的方法有四種:code

  1. 使用絕對路徑;
  2. 添加可執行文件路徑到PATH環境變量;
  3. 使用官方推薦的加載命令:scl enable devtoolset-x bash, x爲要啓用的版本;
  4. 執行安裝軟件自帶的腳本: source /opt/rh/devtoolset-x/enable,x爲要啓用的版本。

推薦使用最後兩種方式,例如啓用gcc 6: source /opt/rh/devtoolset-6/enable,而後輸入gcc -v查看版本已經變成gcc 6.3.1。使用相似的命令能夠隨時在多個gcc版本中切換。若是但願長期使用高版本,可將此命令寫入.bashrc等配置文件。rem

最後說一下,scl以及scl-rh源中的軟件包都安裝在/opt/rh/目錄下,包含可執行文件、配置等。因此啓用命令的路徑是/opt/rh/xxx/enable,安裝的服務重啓命令則多是systemctl restart rh-xxx,須要加rh或scl前綴以區別其餘源的包。若是你用過remi/gitlab等源,其行爲方式也是相似的。get

參考

  1. www.softwarecollections.org/en/scls/rhs…
相關文章
相關標籤/搜索