轉載請註明文章出處:tlanyan.me/install-upg…c++
CentOS 7官方源帶的gcc最新版本是4.8.5,發佈於2015年,年代久遠且不支持c++14。要編譯c++14及以上項目,必需要升級現有版本或者安裝高版本的gcc。git
問題的解決辦法主要有兩種:手動編譯安裝(也能夠從其餘機器拷貝或者網上下載),或從源安裝。大多數狀況下本人都不推薦從源碼編譯,由於過程當中常會出現各類依賴問題須要人工手動解決,費時(單核編譯gcc至少一小時)且耗費精力,而且軟件升級還要再來一次,至關的折騰。鑑於此下文介紹從源安裝的方法。centos
紅帽其實已經編譯好了高版本的gcc,但未更新到base和epel這兩個經常使用的源中,而是放在scl
中。第一步即是安裝scl
:bash
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-5,我也不清楚,估計是包含在devtoolset-4中了吧。值得說明的是這些軟件包能夠同時安裝,不會相互覆蓋和衝突,也不會覆蓋系統的版本。便可以在系統中同時安裝gcc 6, gcc 7, gcc 8等多個版本。rest
由於不會覆蓋系統默認的gcc,使用這些軟件的方法有四種:code
scl enable devtoolset-x bash
, x爲要啓用的版本;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